恒美微站
首页
关于我们
建站服务
主题模板
案例展示
资讯中心
联系我们
C语言——文件包含,条件编译,不同模块函数组成完整内容的方式
首页
资讯中心
/
C语言——文件包含,条件编译,不同模块函数组成完整内容的方式
C语言——文件包含,条件编译,不同模块函数组成完整内容的方式
发布时间:2026/9/30 5:30:43
文件包含#include文件名//默认到系统的标准路径下寻找要包含的头文件#includ3文件名//默认先到当前位置下 寻找要包含的头文件如果找到包含进来如果没找到才到系统的标准路径下寻找说明1include这个预处理命令执行后用文件中的内容替换这个命令所在的位置2使用时 //如果是系统相关的头文件用 //如果自己写的头文件用条件编译语义判断标识符是否定义如果定义了——真 选择程序段1如果没定义——假 选择程序段2如下代码是定义后执行结果是yes#includestdio.h #define N int main(void) { #ifdef N printf(yes\n); #else printf(no\n); #endif return 0; }以下是与前面逻辑相反的情况即先判断假再判断真还有下面这种用于控制哪些语句运行#if 表达式 程序段1 #else 程序段2 #endif#if 1printf(yes\n);#endif执行结果yes#if 0printf(yes\n);#endif不运行这段打印#if 后也可以用计算表达式比如#if 12文件包含实现好的功能 某个模块独立的.c程序提供或者打包成库文件这时候要把大量的各个模块的.c文件结合起来一个.c对应有一个头文件.c——实现具体功能的具体代码比如函数.h——头文件——放的是自身需要用到的宏类型说明函数声明//变量的定义不能放到头文件原因变量定义 int a10; 会分配内存头文件会被多次 #include 粘贴到不同.c里就造成【同一个变量多次分配内存】链接时报重复定义错误#ifndef 头文件名 // 大写前后下划线#define 头文件名1,2两步过程是为了防止重复包含的问题如果遇到#includestdio.h#includestdio.h两次头文件多次包含了文件可能会报错这个能阻止多次使用#ifndef if not defined翻译如果没有被定义1. 第一次 #include getDays.h检查 _GETDAYS_H_ 有没有被定义如果没有就执行 #define _GETDAYS_H_ 把这个宏标记定义上往下执行把里面的函数声明加载进来2. 第二次又 #include getDays.h检查 _GETDAYS_H_ 已经定义过了#ifndef 条件不成立直接跳过中间全部代码作用防止同一个头文件被重复粘贴避免重复声明报错保护声明的内容只出现一次举一个实际例子找最大值最小值#includestdio.h //求最大值 int getMax(int x, int y) { if(x y) return x; else return y; } //求最小值 int getMin(int x, int y) { if(x y) return x; else return y; } int main(void) { int a,b; printf(请输入两个整数); scanf(%d%d, a, b); int max getMax(a,b); int min getMin(a,b); printf(最大值%d最小值%d\n, max, min); return 0; }以上是一个单独的.c的找最大值最小值的代码以下是找最大值的.h文件#ifndef __MAX_H__ //如果先前没有定义过就定义这个标识符包含声明内容 #define __MAX_H__ //目的是防止后续重复使用这个头文件会重复声明 int getMax(int x,int y); //声明函数用于后续调用知道有这个函数在 #endif //结束以下是找最大值的.c文件#include max.h int getMax(int x, int y) { return xy ? x:y; }以下是找最小值的.h文件#ifndef __MIN_H__ #define __MIN_H__ int getMin(int x,int y); #endif以下是找最小值的.c文件#include min.h int getMin(int x, int y) { return xy ? x:y; }以下是主函数#includestdio.h //调用标准库 #include max.h //调用获取最大值函数的声明 #include min.h //调用获取最小值函数的声明 int main(void) { int a12,b7; printf(max%d\n, getMax(a,b)); printf(min%d\n, getMin(a,b)); return 0; }情况1全部写在同一个 .c 文件两种写法二选一1. 函数写在main前面编译器从上往下读提前看到函数实现main直接调用不用单独写声明。2. 函数写在main后面必须在main之前写函数声明告诉编译器这个函数的返回值、参数。情况2分模块多个.c函数的实现代码放到另一个 .cmax.c。但是main.c不知道这个函数依然需要函数声明。方案A直接在main.c手写一行 int getMax(int x,int y);缺点项目大了几十个函数每个文件都复制粘贴声明一旦函数参数改了所有地方全部手动改极易漏改、出错。方案B把这一堆声明统一放进 .h头文件所有需要调用这个模块的 .c 只写一句 #include max.h 。只要修改头文件里的声明所有包含这个头的文件自动同步统一管理。