编译器对C语言源程序进行处理大致可以分为预处理(preprocess)、编译(compile)、汇编(assemble)和链接(linking)共四个步骤最终才生成可执行程序,一般在对源程序进行语法和词法分析之前,先要对程序进行预处理,C语言编译器已经提供了部分预处理指令来指示编译器如何对源程序进行预处理,预处理指令以#开始,独占一行。
这里我们主要说一下#ifndef和#endif,他们主要是用在防止头文件重复包含的情况,这对于模块化开发至关重要。
我们在这里以stm32f10x.h固件库文件的内容为例:
#ifndef_STM32F10x_H
#define_STM32F10x_h
......
#endif
第1行用#ifndef测试_STM32F10x_H是否被定义过?如果没有定义,则会执行第2行定义 _STM32F10x_H然后依次执行下面的声明语句。
第3行用#endif来结束上述语句。