0
#include"symapi.h"


int SymInit               (char                          * db_filename,
                           SYMINIT_ACCMODE_T               access_mode,
                           int                           * p_handle,
                           SYMAPI_CONNECTION_BLK_T       * cblk,
                           char                          * vendor_id)
{
return 0;
}

g++ -o symapi.o -c sym.cpp

sym.cpp:4: エラー: 数値定数の前に識別子が必要です

sym.cpp:4: エラー: 数値定数の前に ',' または '...' が必要です

この小さなコードをコンパイルすると、上記のエラーが発生します。進め方の手がかりがありません。ヘッダーから関数プロトタイプをコピーし、それを定義しようとしています。私のヘッダーファイルは本当に大きいです。Google ドライブにアップロードしました: https://docs.google.com/file/d/0B8NCZDm0ClHVWFM3Qm5wU0MwUE0/edit?usp=sharing 助けてください

4

1 に答える 1

2

g++ -E test.cpp以下を示します。-E前処理で止まります。

# 2 "test.cpp" 2
int SymInitV(char * db_filename, SYMINIT_ACCMODE_T access_mode, int * p_handle, SYMAPI_CONNECTION_BLK_T * cblk, char * vendor_id, 0x07000393)
{
    return 0;
}

最後のパラメーターは単純な数値であり、データ型は関連付けられていません。

SysInit は symapi.h で定義されたマクロで、次のマクロに置き換えられます

#define SymInit(f, a, h, cb, vid) SymInitV(f, a, h, cb, vid, SYMAPI_C_VERSION)

代わりに、次の宣言を取る SymInitV 関数を実装してみてください

int SymInitV(char * db_filename, SYMINIT_ACCMODE_T access_mode, int * p_handle, SYMAPI_CONNECTION_BLK_T * cblk, char * vendor_id, int version)
于 2013-08-19T11:03:28.977 に答える