条件编译指令 #if // 如果,#if VER==1 #ifdef // 如果定义了... #ifndef // 如果没有定义... #elif // 否则如果... #else // 否则 #endif // 和#if/#ifdef/#ifndef配对使用 #undef // 取消定义,和#define相反 满足条件(条件表达式的值非零)的代码参加编译,否则不参加编译。 头文件卫士 com.h / \ net.h des.h / \ / \ net.c main.c des.c 头文件卫士:在xxx.h中 #ifndef _XXX_H #define _XXX_H // 头文件代码... #endif // _XXX_H 防止同一个.h文件被沿着不同路径包含到一个.c文件中产生重定义冲突。 头文件 第一个:com.h: #ifndef _COM_H //如果没有定义... #define _COM_H //就定义... #include typedef struct tag_pack { char head[256]; char body[1024]; }pack; #endif //与上面#ifndef是成对 第二个:des.h: #include 'com.h' void add2(pack *p); void sub2(pack *p); 第三个:net.h #include 'com.h' void add(pack *p); void sub(pack *p); 源文件 第一个:des.c #include 'des.h' void add2(pack *p) { printf('add2两数相加!\n'); } void sub2(pack *p) { pack t; add2(&t); printf('sub2两数相减!\n'); } 第二个:net.c #include 'net.h' void add(pack *p) { printf('addg两数相加!\n'); } void sub(pack *p) { printf('sub两数相减!\n'); } 第三个:main.c #include 'net.h' #include 'des.h' int main() { pack p; add(&p); sub(&p); add2(&p); sub2(&p); return 0; } 编译时注意:(以gcc编译器为准)(头文件永远不参与编译): gcc des.c net.c main.c -o 9_1.exe 注:本文为邢帅教育c语言课堂部分笔记。如果想要学习更深、更细、更多,那么来加入我们吧!不仅有免费公开课还有专业老师讲授知识和面对面解答哦 点击链接一起加入啦~ 或者扫描下方二维码加入本群。 |
|