国产探花免费观看_亚洲丰满少妇自慰呻吟_97日韩有码在线_资源在线日韩欧美_一区二区精品毛片,辰东完美世界有声小说,欢乐颂第一季,yy玄幻小说排行榜完本

首頁 > 學院 > 開發設計 > 正文

VC里一些容易混淆的地方

2019-11-17 05:51:41
字體:
來源:轉載
供稿:網友
1.FALSE/TRUE與false/true的區別:

 false/true是標準C++語言里新增的要害字,而FALSE/TRUE是通過#define,這要用途是解決程序在C與C++中環境的差異,以下是FALSE/TRUE在windef.h的定義:

#ifndef FALSE
#define FALSE 0
#endif

#ifndef TRUE
#define TRUE 1
#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中的定義:typedef int BOOL;

3.NULL與0的區別:

 還是讓我們看一下windef.h中NULL的定義:

#ifndef NULL
#ifdef __cplusplus//這個是指示是用C++來編譯程序
#define NULL 0
#else
#define NULL ((void *)0)
#endif
#endif

所以說:它們沒有區別,只不過在C里面會做一個強制類型轉換。

4.HINSTANCE與HMODULE的區別:

在windef.h中的定義:

typedef HINSTANCE HMODULE; /* HMODULEs can be used in place of HINSTANCEs */


5.CALLBACK,WINAPI的實質:

在windef.h中的定義:

#undef far
#undef near
#undef pascal

#define far
#define near
#if (!defined(_MAC)) && ((_MSC_VER >= 800) || defined(_STDCALL_SUPPORTED))
   #define pascal __stdcall
#else
   #define pascal
#endif

#if defined(DOSWIN32) || defined(_MAC)
   #define cdecl _cdecl
   #ifndef CDECL
       #define CDECL _cdecl
   #endif
#else
   #define cdecl
   #ifndef CDECL
       #define CDECL
   #endif
#endif

#ifdef _MAC
   #define CALLBACK PASCAL
   #define WINAPI CDECL
   #define WINAPIV CDECL
   #define APIENTRY WINAPI
   #define APipRIVATE CDECL
   #ifdef _68K_
       #define PASCAL __pascal
   #else
       #define PASCAL
   #endif
#elif (_MSC_VER >= 800) || defined(_STDCALL_SUPPORTED)
       #define CALLBACK __stdcall
       #define WINAPI __stdcall
       #define WINAPIV __cdecl
       #define APIENTRY WINAPI
       #define APIPRIVATE __stdcall
       #define PASCAL __stdcall
   #else
       #define CALLBACK

       #define WINAPI
       #define WINAPIV
       #define APIENTRY WINAPI
       #define APIPRIVATE
       #define PASCAL pascal
#endif


6.一些常見類型的定義:

在windef.h中的定義:

typedef UINT WPARAM;
typedef LONG LPARAM;
typedef LONG LRESULT;


typedef int INT;
typedef unsigned int UINT;


typedef unsigned long DWord;
typedef int BOOL;
typedef unsigned char BYTE;
typedef unsigned short WORD;
typedef float FLOAT;

typedef unsigned long ULONG;
typedef unsigned short USHORT;
typedef unsigned char UCHAR;
typedef char *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);
typedef WORD ATOM;
typedef HANDLE HGLOBAL;
typedef HANDLE HLOCAL;
typedef HANDLE GLOBALHANDLE;
typedef HANDLE LOCALHANDLE;
typedef HICON HCURSOR; /* HICONs & HCURSORs are polymorphic */
typedef DWORD COLORREF;

在windowsx.h中:

#define DECLARE_HANDLE32 DECLARE_HANDLE

penwin.h:

#ifndef DECLARE_HANDLE32
#define DECLARE_HANDLE32(name)/
struct name##__ { int unused; };/
typedef const struct name##__ FAR* name
#endif //!DECLARE_HANDLE32 

6.Platform的編譯版本的相關預處理宏:

Macro Description 
__cplusplus Defined for C++ programs only. 
_MFC_VER Defines the MFC version. Defined as 0x0421 for Microsoft Foundation Class Library 4.21. Always defined. 
_MSC_VER Defines the compiler version. Defined as 1200 for Microsoft Visual C++ 6.0. Always defined. 
_WIN32 Defined for applications for Win32®. Always defined. 


發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
主站蜘蛛池模板: 淄博市| 淮阳县| 鄂托克旗| 鄂尔多斯市| 张掖市| 文化| 黄石市| 清徐县| 开化县| 武城县| 永城市| 义马市| 明光市| 固安县| 鸡西市| 衡水市| 丰都县| 永和县| 琼海市| 日照市| 滨海县| 平果县| 独山县| 密云县| 崇义县| 聊城市| 枞阳县| 林口县| 乌拉特中旗| 荥阳市| 巢湖市| 明星| 牟定县| 巴南区| 宜都市| 吴堡县| 沙河市| 湘潭县| 河津市| 苏州市| 上高县|