其中
_MSC_VER 表示VC的版本号。
#pragma once指示该文件只编译一次。
_MSC_VER > 1000 表示只有版本大于 1000 时才支持 #pragma once 这个指令。
#pragma once与下面一段的区别:
#if !defined(AFX_MYDLG_H__89AB5BE9_59BF_4B62_BCD9_EB6B0F550803__INCLUDED_)
#define AFX_MYDLG_H__89AB5BE9_59BF_4B62_BCD9_EB6B0F550803__INCLUDED_
.....
#endif
现在我是这么理解的:
它们两其实没有什么关系,
#pragma once 作用在编译器编译头文件时,指示文件只编译一次。
#if !defined #define ..... #endif 用于防止包含重复的类,结构体,变量等。
比如在两个头文件(a.h 和 b.h )中定义相同的结构体 A,然后在第三个头文件 c.h 里包含 a.h 和 b.h 时,
如果用
#if _MSC_VER > 1000
#pragma once
#endif
编译器就会报错提示重复定义 A了。
但是如果用相同的
#ifndef A_S
#define A_S
...
#endif
加在头文件里,编译器就不会提示重复定义了。
当然一般我们是不会这样重复定义相同的数据结构,这里只是为了解释。