一般用于头文件开始,预编译时,只插入一次此头文件。 例如 头文件 "grandfather.h" #pragma once #ifndef GRANDFATHER_H #define GRANDFATHER_H struct foo { int member; }; #endif /* GRANDFATHER_H */ 当这段程序多次被include ( 多文件编译,相互include时会遇到),只插入和编译一次。 #pragma once 的编译速度 比 #ifndef GRANDFATHER_H #define GRANDFATHER_H ..快, 所以往往 全用。
单个头文件#programa once 比 #ifndef……#define……#endif方便点,不过有些编译器不支持,还有就是如果你#ifndef AAA ……, 而你这个AAA在另一个头文件已经有过宏定义,那么你这个头文件下面的内容就包含不进去了。如果你确实只要一个那还是用#ifndef AAA……#define……#endif,两者各有好处,#ifndef……#define……#endif灵活一点,#programa once方便一点