我正在使用visual studio處理現有的C++項目,並且我發現幾乎每個函數聲明都在函數名前面有一個__cdecl
,如:void __cdecl functionName()
。然後我跳到的__cdecl
的定義,其定位在winnt.h
文件:我的C++代碼中「#define __cdecl」的含義是什麼?
#if (_MSC_VER >= 800) || defined(_STDCALL_SUPPORTED)
#define NTAPI __stdcall
#else
#define _cdecl
#define __cdecl
#define NTAPI
#endif
我搜索cdecl,並得到了它的缺省調用C和C++程序慣例,但上面的代碼告訴我,__cdecl
延伸到無所事事。那麼爲什麼在函數名稱之前放置一個__cdecl
,因爲它什麼都沒有?還是我誤解了上面的代碼?
的*編譯*條件對待'__cdecl'聲明。它不是(也不能)在語言中定義的,因此宏是空的。 –
查看'#if'及其條件?如果這種情況是真的,那麼編譯器可能會把這些作爲擴展關鍵字。 –
Microsoft編譯器使用'__cdecl'作爲調用約定。對於其他編譯器,它可以被定義爲什麼都不是。 –