0

segfault エラーが発生する次のコードがあります

    #define MAPGW_CM_TRACE(...) mapgw_cm_trace(__VA_ARGS__)

関数定義は次のようになります。

    int mapgw_cm_trace(int trapLog, char *pcMsgId, ...)
   { //do something

    }

そして、私はこのような関数を呼び出しています..:

    MAPGW_CM_TRACE(1,"<some String>", 
                23,233, 4783274, 2138123, 23123, 21312,23112); 

省略記号についてあまり理解していない可能性があることはわかっています。助けてください。
前もって感謝します..

4

2 に答える 2

1

クラッシュの原因を正確に推測できませんでした。

ただし、代わりに次のマクロ定義を使用してください

#define MAPGW_CM_TRACE(TRAP,MSGID,args...) mapgw_cm_trace(TRAP,MSGID,##args);

クラッシュが修正されるかどうかを確認します

于 2013-04-19T09:36:26.757 に答える
0

pcMsgId とは何ですか。フォーマット文字列ですか。この場合、各数値 (%d、%u、%ld、または %lu) に一致する % が必要です。pcMsgId がフォーマット文字列でない場合、mapgw_cm_trace はどのようになりますか?関数は、引数がいつ終了したかを認識します。ポインターの配列の場合、通常は後続の NULL です。他の型の場合、通常は count 引数があります。通常、pcMsgId がフォーマット文字列でない場合、次の引数はすべて pcMsgId と同じ型になります。基本的に、pcMsgId に続く引数の数はどのように決定されますか。

于 2013-04-19T09:36:37.177 に答える