本文共 859 字,大约阅读时间需要 2 分钟。
预处理程序提供条件编译的功能。可以按不同的条件去编译不同的程序部分,产生不同的目标代码文件。使用条件语句进行编译,生成的目标代码程序较长,而采用条件编译,生成的目标程序较短。如果条件选择的程序段很长,采用条件编译的方法是十分必要的。
当头文件第一次被包含时,它被正常处理,如果头文件被再次包含,通过条件编译,它的内容被忽略。符号_STM32F10X_GPIO_H按照被包含头文件的文件名进行取名,以避免由于其他头文件使用相同的符号而引起的冲突。
预处理器仍将整个头文件读入,即使这个头文件所有内容将被忽略。由于这种处理将托慢编译速度,所以如果可能,应该避免出现多重包含。
/*如何解释 !://第一次未define执行include,第二次已经#define不合条件(条件是notdefine,而已经define了)所以不执行include*/#ifndef _STM32F10X_GPIO_H#define _STM32F10X_GPIO_H#imclude "stm32f10x.h" //此处为头文件内容#endif
#ifndef _STU_H#define _STU_H/*条件编译的中间可以添加的内容*///引入库头文件#define N 20#define SIZE 3//结构体类型定义typedef struct student{ char name[N]; //姓名 int height; //身高 float scores[SIZE]; //三门成绩}Stu;//枚举定义//函数声明//宏定义#endif
使用#ifndef只是防止了头文件被重复包含,但是无法防止变量被重复定义。
待补充ing:变量被重复定义之全局变量
参考文章: https://www.jianshu.com/p/3447f3230b29 https://blog.csdn.net/a623891391/article/details/13773715