最近看一些源码的时候经常看到
#ifndef SOME_H_
#define SOME_H_
...
#endif
很懵逼,这些东西到底是干嘛的,为什么要define一个_H?
然后查了一些资料,又翻了翻C PRIMRE PLUS(当时没看懂这部分),现在就有了直观的认识了。
这个东西是为了避免头文件被重复编译,而define后面的标识符是可以随便定的,但是通常取头文件相同的标识符。
我们知道C++是先编译,再运行的,一般我们又多将类等类型写在头文件中,这个时候问题就来了,当写大一点的程序时候,需要多个文件一起编译,这时候,#ifndef的作用就显现出来了。
如果没有#ifndef这个东西,那么在再次编译的时候,这个头文件又会被重新编译一次;而如果编译器发现#ifndef后面这个标识符已经编译过了,那么就会直接忽略掉这一段,就不用进行再次编译了。