预编译指令:
(1)引入头文件的两种方式
- #include <> :使用尖括号,预编译器会到系统路径下去寻找该头文件。
- #include " " :使用双引号,预编译器会先在当前文件所在目录下查找该头文件;如果没有找到,就回去系统路径下查找。
(2)写在.h头文件中的条件编译指令
#ifndef 标记名
#define 标记名
函数声明、结构体的声明、类的声明等
#endif
上述指令的意思就是:在预编译阶段,如果没有定义标记名、就定义标记名并将函数声明、结构体声明、类声明等拷贝到引入该头文件的文件中;如果定义了该标记,就结束该预编译指令
**注意:该指令和#ifdef #define #endif 相反,但都是成对出现的
(3)正确代码示例:
sum.h文件
#ifndef SUM_H
#define SUM_H
extern int sum(int a, int b);
#endif
sum.c/sum.cpp文件
#include "sum.h"
int sum(int a, int b)
{
return a + b;
}
main.c/main.cpp文件
#include "sum.h"
int main()
{
int a = 10;
int b = 20;
int c = sum(a , b);
return 0;
}
(4)多个文件重复使用一个头文件的编译链接期间的逻辑图
(5)总结
#ifndef 标记名
#define 标记名
函数声明、结构体的声明、类的声明等
#endif
- 使用该指令,预编译器可以在预编译阶段帮助我们,处理重复包含的头文件。防止了头文件的重复拷贝造成的空间浪费。