ifdef 若标识符被定义,则编译

ifndef 若标识符未被定义,则不编译

ifdef

1
2
3
4
5
6
7
#ifdef WIN32
// Windows环境下编译
printf("windows")
#else
// 非Windows环境下编译
printf("linux")
#endif WIN32

ifndef

1
2
3
4
5
6
7
#ifndef WIN32
// 非Windows环境下编译
printf("linux")
#else
// Windows环境下编译
printf("windows")
#endif !WIN32

有了预备知识,对于.h头文件的规则也易于理解了
Person.h

1
2
3
4
#ifndef ALI5669_PROJECT_PERSON_H
#define ALI5669_PROJECT_PERSON_H
// Person.h内容
#endif !ALI5669_PROJECT_PERSON_H

在不同文件中同时引用了同一个头文件,当这些文件要合成一个可执行文件时就出现了重复引用冲突
使用这个方法,就可以让.h文件只出现一次

对于Visual Studio中出现的WIN32标识符,要使用需要在项目属性-C/C++-预处理器-预处理器定义中添加WIN32