首 页IT知识库翔宇问吧收藏本站
当前位置:翔宇亭IT乐园IT知识库编程技术C/C++

VC里一些容易混淆的地方

减小字体 增大字体 作者:佚名  来源:电脑硬件知识网  发布时间:2010-01-26 11:43:00

1.FALSE/TRUE与false/true的区别:

false/true是标准C++语言里新增的要害字,而FALSE/TRUE是通过#define,这要用途是解决程序在C与C++中环境的差异,以下是FALSE/TRUE在windef.h的定义:

#ifndefFALSE
#defineFALSE0
#endif

#ifndefTRUE
#defineTRUE1
#endif


也就是说FALSE/TRUE是int类型,而false/true是bool类型;所以两者不一样的,只不过我们在使用中没有这种感觉,因为C++会帮你做隐式转换。

2.bool的大小与BOOL的区别:

bool在C++里是占用1字节,而BOOL是int类型,int类型的大小是视具体环境而定的;所以来说:false/true只占用1个字节,而TRUE/FALSE视具体环境而言,以下是BOOL在windef.h中的定义:typedefintBOOL;

3.NULL与0的区别:

还是让我们看一下windef.h中NULL的定义:

#ifndefNULL
#ifdef__cplusplus//这个是指示是用C++来编译程序
#defineNULL0
#else
#defineNULL((void*)0)
#endif
#endif

所以说:它们没有区别,只不过在C里面会做一个强制类型转换。

4.HINSTANCE与HMODULE的区别:

在windef.h中的定义:

typedefHINSTANCEHMODULE;/*HMODULEscanbeusedinplaceofHINSTANCEs*/ 内容来自www.serverjia.cn电脑知识网


5.CALLBACK,WINAPI的实质:

在windef.h中的定义:

#undeffar
#undefnear
#undefpascal

#definefar
#definenear
#if(!defined(_MAC))&&((_MSC_VER>=800)||defined(_STDCALL_SUPPORTED))
#definepascal__stdcall
#else
#definepascal
#endif

#ifdefined(DOSWIN32)||defined(_MAC)
#definecdecl_cdecl
#ifndefCDECL
#defineCDECL_cdecl
#endif
#else
#definecdecl
#ifndefCDECL
#defineCDECL
#endif
#endif

#ifdef_MAC
#defineCALLBACKPASCAL
#defineWINAPICDECL
#defineWINAPIVCDECL
#defineAPIENTRYWINAPI
#defineAPIPRIVATECDECL
#ifdef_68K_
#definePASCAL__pascal
#else
#definePASCAL
#endif
#elif(_MSC_VER>=800)||defined(_STDCALL_SUPPORTED)
#defineCALLBACK__stdcall
#defineWINAPI__stdcall
#defineWINAPIV__cdecl
#defineAPIENTRYWINAPI
#defineAPIPRIVATE__stdcall
#definePASCAL__stdcall
#else
#defineCALLBACK

#defineWINAPI
#defineWINAPIV
#defineAPIENTRYWINAPI

#defineAPIPRIVATE
#definePASCALpascal
#endif


6.一些常见类型的定义:

在windef.h中的定义:

typedefUINTWPARAM;
typedefLONGLPARAM;
typedefLONGLRESULT;


typedefintINT;
typedefunsignedintUINT;


typedefunsignedlongDWord;
typedefintBOOL;
typedefunsignedcharBYTE;
typedefunsignedshortWORD;
typedeffloatFLOAT;

typedefunsignedlongULONG;
typedefunsignedshortUSHORT;
typedefunsignedcharUCHAR;
typedefchar*PSZ;

7.常见Window资源类型的实质:

在windef.h中的定义:

DECLARE_HANDLE(HPEN);
DECLARE_HANDLE(HBITMAP);
DECLARE_HANDLE(HBRUSH);
DECLARE_HANDLE(HDC);
DECLARE_HANDLE(HFONT);
DECLARE_HANDLE(HICON);
DECLARE_HANDLE(HMENU);
DECLARE_HANDLE(HMETAFILE);
DECLARE_HANDLE(HINSTANCE);
DECLARE_HANDLE(HPALETTE);
typedefWORDATOM;
typedefHANDLEHGLOBAL;
typedefHANDLEHLOCAL;
typedefHANDLEGLOBALHANDLE;
typedefHANDLELOCALHANDLE;
typedefHICONHCURSOR;/*HICONs&HCURSORsarepolymorphic*/
typedefDWORDCOLORREF;

在windowsx.h中:

#defineDECLARE_HANDLE32DECLARE_HANDLE

penwin.h:

#ifndefDECLARE_HANDLE32
#defineDECLARE_HANDLE32(name)\
structname##__{intunused;};\
typedefconststructname##__FAR*name
#endif//!DECLARE_HANDLE32 

8.Platform的编译版本的相关预处理宏:

MacroDescription
__cplusplusDefinedforC++programsonly.
_MFC_VERDefinestheMFCversion.Definedas0x0421forMicrosoftFoundationClassLibrary4.21.Alwaysdefined.
_MSC_VERDefinesthecompilerversion.Definedas1200forMicrosoftVisualC++6.0.Alwaysdefined.
_WIN32DefinedforapplicationsforWin32®.Alwaysdefined.
 

Tags:VC BOOL NULL

知识评论评论内容只代表网友观点,与本站立场无关!

   评论摘要(共 0 条,得分 0 分,平均 0 分) 查看完整评论

用户名: 查看更多评论

分 值:100分 85分 70分 55分 40分 25分 10分 1分

内 容:

            请注意用语文明且合法,不要发布带有攻击性、侮辱性的言论,谢谢合作!

         通知管理员 验证码:

关于本站 | 网站帮助 | 广告合作 | 网站声明 | 友情连接 | 网站地图 | 用户守则 | 联系我们 |
本站大多数内容来自互联网或网站会员发布,如有侵权,请来信告之,谢谢!
Copyright © 2007-2017 biye5u.com. All Rights Reserved.
网站备案号:黑ICP备13005378号-3