У меня есть проблема с 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
Я не могу изменить эти функции, так как они являются частью "Kit 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 Developer Developer Kit Kit, версия 14» (FRAMEWRK.H). Думаю, мне не следует изменять его. –
В этом случае я думаю, что FRAMEWRK.H предназначался для использования с MSVC, а не с GCC. Посмотрите, можете ли вы поместить что-то вроде '#define cdecl __cdecl' перед включением файла заголовка. Но я боюсь, что это только верхушка айсберга. –
@MrLister: вы были правы как о '#define cdecl __cdecl', так и об айсберге ... Теперь я получаю ошибки в объявленных незанятых функциях (например,' memcpy_s'); они являются глобальными, включены и установлены путь. –