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##__ ;/
typedef const struct name##__ far* name
#endif //!declare_handle32
-資料引用:http://www.knowsky.com/392815.html
VC裡一些容易混淆的地方
1.false true與false true的區別 false true是標準c 語言裡新增的關鍵字,而false true是通過 define,這要用途是解決程式在c與c 中環境的差異,以下是false true在windef.h的定義 ifndef false define false 0 e...
VC裡一些容易混淆的地方
1.false true與false true的區別 false true是標準c 語言裡新增的關鍵字,而false true是通過 define,這要用途是解決程式在c與c 中環境的差異,以下是false true在windef.h的定義 ifndef false define false 0 e...
一些容易錯的地方
錯誤1.錯因 compileerror 錯誤資訊如下 source main.cpp in function int main source main.cpp 12 error k was not declared in this scope 正確 如下 錯誤2.答案錯誤 輸出結果不對,看看是不是忘...