0

我有以下导致段错误的代码

    #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 回答