【C/C++】为什么要使用#ifndef?
我们经常可以在头文件(即.h文件)中看到下面几行代码:
例如,在math.h文件中:
#ifndef _MATH_H_
#define _MATH_H_
/*
中间一些定义
*/
#endif
那么,ifndef到底起什么作用呢?
其实,ifndef在编译过程中起作用。比如,两个源文件(.c文件)都包含相同的头文件。编译开始后,当第一个文件被编译后,_MATH_H_就被定义了。当编译第二个文件时,首先判断是否定义过_MATH_H_文件,这个就是ifndef起到的实际作用。如果发现已经定义过了,程序变不会再编译一次math.h文件,起到了避免重复编译的作用(也避免了后面链接时出现大量重复的声明)。
注:如果对于上面叙述中,编译、链接等名词陌生,可以搜索C++编译过程来了解。
所以,我们在编写头文件时,都会加上#ifndef 和#def两行,一般格式如下:
#ifndef 标识
#define 标识
……
#endif
标识的命名:一般开头结尾都是_,中间是文件名的大写。例如, math.h文件。标识可以写成:_MATH_H_这样。
以上就是今天介绍的全部内容啦~