ifndef
C语言中预处理命令由#开头,为了代码的规范性变量和函数的声明一般放在其相应的头文件中,但不能将函数定义放入头文件,否则即使使用条件编译也会报错,不同源文件可能会包含同一个头文件,为了防止重复包含头文件引起的冲突,使用条件编译会解决该问题
#include <stdio.h>
//为了直观表示,将重复包含头文件的部分表示出来
int a = 0;
int a = 0;
int main()
{
return 0;
}
出现了变量重复定义的错误
username@xxx:~/ifndef$ gcc main.c
main.c:5:5: error: redefinition of ‘a’
int a = 0;
^
main.c:4:5: note: previous definition of ‘a’ was here
int a = 0;
^
#ifndef条件编译的意思是如果定义了某个宏,则跳过预编译条件内代码
#include <stdio.h>
#ifndef _A_
#define _A_ //这里定义了_A_宏
int a = 0;
#endif
#ifndef _A_ //这里条件编译不通过,条件内代码则不被执行
#define _A_
int a = 0;
#endif
int main()
{
return 0;
}