我有以下代码导致段错误
#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);
我知道我对省略号的了解可能较少。请帮帮我 提前谢谢..
答案 0 :(得分:1)
我无法想象崩溃的原因。
但请改用以下宏定义
#define MAPGW_CM_TRACE(TRAP,MSGID,args...) mapgw_cm_trace(TRAP,MSGID,##args);
并查看是否修复了崩溃
答案 1 :(得分:0)
什么是pcMsgId,它是一个格式字符串,在这种情况下,每个数字(%d,%u,%ld或%lu)需要匹配%,如果pcMsgId不是格式字符串那么如何mapgw_cm_trace函数知道参数何时结束,对于指针数组,它通常是尾随NULL,对于其他类型,通常有一个count参数。通常情况下,如果pcMsgId不是格式字符串,则以下参数都与pcMsgId的类型相同。基本上,如何确定pcMsgId之后的参数数量。