朝花夕拾 · C语言 | 多文件篇 全局变量使用1.在源文件中定义全局变量2.如果只是在定义该全局变量的文件中使用该全局变量可以不声明3.如果要在一个外部的源文件中使用该全局变量则该变量必须被声明4.在对应的头文件中加extern关键字声明头文件中全局变量只能声明不能初始化定义应在.c文件在头文件的声明里函数默认为extern编译器会自动加上。预处理阶段只认#include预处理器看到#include ji.h把ji.h里的int get_ji(int num1, int num2);复制过来。看到#include shang.h把shang.h里的声明复制过来。此时main.c里只有“声明”知道有这两个函数但没有“定义”不知道这两个函数具体怎么算。编译 链接阶段关键区别如果只输入gcc main.c编译器会报错undefined reference to get_ji和undefined reference to get_shang。因为编译器只编译了main.c找不到get_ji和get_shang的具体代码定义。头文件只是“承诺”这些函数存在但真正的“兑现”需要靠链接器把对应的.c文件编译结果合并进来。Makefile:管理代码工程的编译和链接由make工具进行解释实现一键化工程的编译和链接。文件Makefile/makefile文件/脚本语法目标文件依赖文件编译规则目标文件a.out依赖文件(生成目标文件所依赖的源文件):main.c sum.c sub.c ......编译规则gcc main.c sub.c sum.c ( -o a.out)编译代码makeMakefile中的变量1.自定义变量OBJ a.out //定义Makefile的变量OBJ并为其赋值 SRC main.c sum.c sub.c SRC main.c SRC sum.c SRC sub.c CC gcc INCLUDE ../include //includexxx双引号里的内容只能在当前路径下访问所以使用-I指明头文件路径 LIBS ../lib $(OBJ) :$(SRC) //变量的引用$() $(CC) $(SRC) -o$ -I$(INCLUDE) -L$(LIBS) -lm //-o $(OBJ) 给自定义变量起名 //-I头文件路径 -L指定库的位置 //-lm链接数学库 a.out: main.c sum.c sub.c gcc main.c sub.c sum.c 自定义伪代码 clean rm $(OBJ) //表示clean实现移除文件功能 //用 make clean调用:给变量赋值在原变量值的基础上再增加新增?: 若变量之前没有被赋值则赋值若之前被赋过值则保留原值2.系统变量可直接使用$:表示目标文件$^ :表示所有依赖文件$:表示第一个依赖文件

相关新闻

最新新闻

Windows原地升级助手:轻松实现系统版本自由切换

Windows原地升级助手:轻松实现系统版本自由切换

Windows原地升级助手:轻松实现系统版本自由切换 【免费下载链接】In-Place_Upgrade_Helper Helper-Tool for Windows 10/11/Server In-Place-upgrades and changing between Windows Editions 项目地址: https://gitcode.com/GitHub_Trending/in/In-Place_Upgrade…

2026/8/11 23:16:51
High Speed Scanner

High Speed Scanner

High Speed Scanner 高速扫描仪

2026/8/11 23:16:51
昇腾AI智能体自动管理安卓应用

昇腾AI智能体自动管理安卓应用

针对昇腾Model-Agent模型适配大赛第二季中,基于昇腾(Ascend)与AtomGit AI技术实现安卓手机应用的自动化删除与安装任务,其核心在于构建一个具备环境感知、决策规划和自动化执行能力的智能体(Agent)。该Agen…

2026/8/11 23:16:51
能源行业业扩报装自动化方案:基于大模型Agent的电力营销数智化转型实践

能源行业业扩报装自动化方案:基于大模型Agent的电力营销数智化转型实践

在能源行业数字化转型与新型电力系统建设的宏观背景下,业扩报装作为电力营销服务的核心环节,其自动化方案正经历从传统人工流程向数智化驱动的深刻变革。随着《新型电力系统建设“十五五”规划》的发布,电网企业提升营销数字化水平已成为必然…

2026/8/11 23:16:51
如何在5分钟内搭建免费Web POS系统:NexoPOS完整实战指南

如何在5分钟内搭建免费Web POS系统:NexoPOS完整实战指南

如何在5分钟内搭建免费Web POS系统:NexoPOS完整实战指南 【免费下载链接】NexoPOS Laravel-based web POS system with Vue.js, Tailwind CSS, inventory management, sales processing, customer records, reports, and modular extension support. 项目地址: ht…

2026/8/11 23:16:51
Windows软件闪退?3分钟搞定DLL缺失问题,这个开源神器太省心了

Windows软件闪退?3分钟搞定DLL缺失问题,这个开源神器太省心了

Windows软件闪退?3分钟搞定DLL缺失问题,这个开源神器太省心了 【免费下载链接】vcredist AIO Repack for latest Microsoft Visual C Redistributable Runtimes 项目地址: https://gitcode.com/gh_mirrors/vc/vcredist 你是否曾经遇到过这样的场景…

2026/8/11 23:11:51

日新闻