之前預期的初始化我有cdecl調用約定一個問題:CDECL錯誤:
void Test1(char* str, ...) // ok
{}
void cdecl Test2(char* str, ...) // error: expected initializer before 'Test2'
{}
int main()
{}
我應該怎麼做才能讓編譯器識別cdecl調用約定?
謝謝!
平臺:Windows 7; MinGW的; GCC 4.6.1
我不能修改這些功能,因爲它們是 「Microsoft Excel中開發人員工具包,版本14」 的一部分,在文件FRAMEWRK.H:
///***************************************************************************
// File: FRAMEWRK.H
//
// Purpose: Header file for Framework library
//
// Platform: Microsoft Windows
//...
// From the Microsoft Excel Developer's Kit, Version 14
// Copyright (c) 1997 - 2010 Microsoft Corporation. All rights reserved.
///***************************************************************************
...
//
// Function prototypes
//
#ifdef __cplusplus
extern "C" {
#endif
void far cdecl debugPrintf(LPSTR lpFormat, ...);
LPSTR GetTempMemory(size_t cBytes);
void FreeAllTempMemory(void);
...
問題是該函數是「Microsoft Excel Developer's Kit,版本14」(FRAMEWRK.H)的一部分。我想我不應該修改它。 – 2012-01-06 12:13:50
在這種情況下,我認爲FRAMEWRK.H應該用於MSVC,而不是GCC。在包含頭文件之前,看看你是否可以放入類似'#define cdecl __cdecl'的東西。但我擔心這只是冰山一角。 – 2012-01-06 12:27:46
@MrLister:你對'#define cdecl __cdecl'和冰山都是正確的......現在我得到關於聲明的未聲明函數(例如'memcpy_s')的錯誤;他們是全球性的,包括和路徑設置。 – 2012-01-06 14:32:34