利用VC的AppWizard一般会生成如下代码:
#if !defined(AFX_***_H__A06FACFB_DE47_4BCD_ABB3_3AE66C6D9765__INCLUDED_) #if _MSC_VER > 1000 ... #endif // !defined(AFX_***__A06FACFB_DE47_4BCD_ABB3_3AE66C6D9765__INCLUDED_) |
可能有些人觉得头文件保护符和#pragma once重复了,其实不然。
pragma once是告诉编译器在编译阶段只被编译器包含一次,是否有效与具体的编译有关,在跨平台时不应该使用。而头文件保护符是与语言相关的,推荐跨平台时使用。
#if !define ...
#define ...
#endif
编译器每次读到#if !define 时,如果已经定义过了则跳过,但还是要搜索整个文件,找到#endif 时退出,此时无疑增加了编译时间。而加上#pragma once一句,则可以让编译器立即退出,减少了编译的时间。
综上,一般用法为:
|