1.简介
该语句是条件编译的一种,一般用在c、c++头文件中,防止头文件被重复包含。
2.原理
假设在matrix.h中有如下代码1:
代码1:
#ifndef __MATRIX_MUL__
#define __MATRIX_MUL__
函数与变量声明
#endif
假设在main.c中对matrix.h错误地重复包含两次,有如下代码2:
代码2;
#include "matrix.h"
#include "matrix.h"
int main()
{
return 0;
}
在编译时代码2会被展开为:
//条件编译A
#ifndef __MATRIX_MUL__
#define __MATRIX_MUL__
函数与变量声明
#endif
//条件编译B
#ifndef __MATRIX_MUL__
#define __MATRIX_MUL__
函数与变量声明
#endif
int main()
{
return 0;
}
可见当第一次运行条件编译A,就是这段代码
#ifndef __MATRIX_MUL__
#define __MATRIX_MUL__
函数与变量声明
#endif
【_ MATRIX_MUL_】会被定义,然后当再次运行到接下来的条件编译B时,由于已经定义了【_ MATRIX_MUL_】,条件编译B里的声明和定义不会再次被声明了。头文件引入条件声明就起到了防止重定义的作用。