前に期待される初期化子は私が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)の一部であることです。私はそれを変更するべきではないと思う。 –
その場合、FRAMEWRK.HはGCCではなくMSVCで使用することを意図していたと思います。ヘッダファイルをインクルードする前に、 '#define cdecl __cdecl'のようなものを置くことができるかどうかを見てください。しかし、これはちょうど氷山の一角に過ぎないのではないかと心配しています。 –
@MrLister:あなたは '#define cdecl __cdecl'と氷山についての権利を持っていました...今宣言されている宣言されていない関数(例えば' memcpy_s')についてはエラーが出ます。それらはグローバルであり、含まれており、パスが設定されています。 –