#pragma once 和 #ifndef #define …#endif 有什么不同?

来源:百度文库 编辑:神马文学网 时间:2024/04/27 18:43:50

#pragma once 和 #ifndef #define …#endif 有什么不同?

#infndef XX#define XX     #if _MSC_VER > 1000         #pragma once     #endif     .     .#endif

 

从只让头文件只编译一次的角度去看,似乎两种方法是一样的。但查看MSND后发现应该是不一样的。看MSDN对#pragma once 的定义:

#pragma once

Specifies that the file, in which the pragma resides, will be included (opened) only once by the compiler in a build. A common use for this pragma is the following:一个是让编译器只打开一次文件,而如果只有#ifndef #define …#endif 的话,虽然编译器只编译一次头文件,但是他还是会打开这个文件N多次。

 

注意:   _MSC_VER 是出于版本兼容性考虑,定义                Defines the compiler version. Defined as 1200 for Microsoft Visual C++ 6.0. Always defined.

———————-

#pragma是一种编译指令,使用格式为#pragma   token-string,象  
  #pragma   data_seg(".mdata")…..#pragma   data_seg()可以让编译器把两者之间的所有已初始化变量放入一个新的.mdata段中。  
  而#pragma   once的意思是要求编译器在编译过程中只将包含此命令文件编译(打开)一次,从而避免重复包含此文件。