文件1main.cc
包含
#include "led.h"
#include "sys.h"
int main(void) {
....
}
头文件2led.h
包含
#ifndef __LED_H
#define __LED_H
#include "sys.h"
#define LED1 PEout(5)
...
#endif __LED_H
头文件3sys.h
包含
#ifndef __SYS_H
#define __SYS_H
....
#endif __SYS_H
合并代码
#ifndef __LED_H
#define __LED_H
#ifndef __SYS_H
#define __SYS_H
....
#endif __SYS_H
#define LED1 PEout(5)
...
#endif __LED_H
#ifndef __SYS_H
#define __SYS_H
....
#endif __SYS_H
int main(void) {
....
}
引用头文件后,相当于将头文件的每一行全部引用进去,如果ifndef没有定义过,则会展开,定义过则不会展开。
SYS_H
在里面出现了两次,若第一次没有定义,可以展开一次,第二次再出现SYS_H
时已经定义过了,不再展开;
使用这种方法可以使得所有的头文件只会被展开一次。