读书人

VC++AppWizard自动生成的定义看不懂,该

发布时间: 2012-04-05 12:42:40 作者: rapoo

VC++AppWizard自动生成的定义看不懂
VC++AppWizard自动生成的定义看不懂


#if !defined(AFX_QUICKBBS_H__3DBE3F97_1634_42FB_8864_103F6B5B3BC0__INCLUDED_)
#define AFX_QUICKBBS_H__3DBE3F97_1634_42FB_8864_103F6B5B3BC0__INCLUDED_

#if _MSC_VER > 1000
#pragma once
#endif // _MSC_VER > 1000

#ifndef __AFXWIN_H__
#error include 'stdafx.h ' before including this file for PCH
#endif

有谁看得懂吗?

[解决办法]
#if !defined(AFX_QUICKBBS_H__3DBE3F97_1634_42FB_8864_103F6B5B3BC0__INCLUDED_)
#define AFX_QUICKBBS_H__3DBE3F97_1634_42FB_8864_103F6B5B3BC0__INCLUDED_

..........
#endif

这个防止头文件件被重复包含而重定义的宏,之所以有一长串,是为了保证两个自动生成的宏不会重复.
逻辑是:如果宏没有定义,则这个文件还没有包含过. 然后定义宏.当文件被第二次包含时,宏已定义,中间的部分不会再进入预处理后的源文件.
[解决办法]
#if _MSC_VER > 1000
#pragma once
#endif // _MSC_VER > 1000

这个宏好象是为编译器版本而设置.
#pragma once 是在一个工程中多次包含这个文件(不是上面的在一个文件中多次包含一个文件),这个文件只会编译一次,可以提高编译效率.



[解决办法]
#ifndef __AFXWIN_H__
#error include 'stdafx.h ' before including this file for PCH
#endif

这个表示在编译这个文件时要见到宏__AFXWIN_H__ 已经定义,否则输出编译错误信息:在包含这个文件前要先包含 'stdafx.h ' PCH是预编译头文件的意思.


以上是个人的理解,可能有不妥之处.

读书人网 >C++

热点推荐