在此代码中CDECL的含义是什么?

时间:2015-07-05 07:44:56

标签: c winapi

这里我有一本书编程窗口第五版的代码。

#include <windows.h>
#include <tchar.h>
#include <stdio.h>
int CDECL MessageBoxPrintf(TCHAR * szCaption, TCHAR * szFormat, ...)
{
    TCHAR szBuffer[1024];
    va_list pArgList;
    // The va_start macro (defined in STDARG.H) is usually equivalent to:
    // pArgList = (char *) &szFormat + sizeof (szFormat) ;
    va_start(pArgList, szFormat);
    // The last argument to wvsprintf points to the arguments
    _vsntprintf(szBuffer, sizeof (szBuffer) / sizeof (TCHAR),
       szFormat, pArgList);
    // The va_end macro just zeroes out pArgList for no good reason
    va_end(pArgList);
    return MessageBox(NULL, szBuffer, szCaption, 0);
}
int WINAPI WinMain(HINSTANCE hInstance, HINSTANCE hPrevInstance,
    PSTR szCmdLine, int iCmdShow)
{
    int cxScreen, cyScreen;
    cxScreen = GetSystemMetrics(SM_CXSCREEN);
    cyScreen = GetSystemMetrics(SM_CYSCREEN);
    MessageBoxPrintf(TEXT("ScrnSize"),
        TEXT("The screen is %i pixels wide by %i pixels high."),
        cxScreen, cyScreen);
    return 0;
}

下面代码中的int后CDECL的含义是什么?

int CDECL MessageBoxPrintf(TCHAR * szCaption, TCHAR * szFormat, ...)

1 个答案:

答案 0 :(得分:0)

在Windows头文件中,CDECL的定义如下:

#define CDECL

这看起来有点奇怪。这是一个扩展到零的宏。在预期调用约定的地方使用它会产生默认的调用约定,即__cdecl