如何在C函数中使某些参数可选

302*_*und 0 c parameters default-value

我有一种情况,我希望函数的一个参数是可选的.我想知道如何实现它......?

    int mapgw_cm_trace(int trapLog, char *pcMsgId, ...)
Run Code Online (Sandbox Code Playgroud)

我希望traplog参数是可选的.

或者反过来看,如果在函数调用中没有发送此参数,我将此参数设置为默认值(例如1),否则使用函数调用中发送的vaLue.是否有可能实现这一目标..?我不想使用va_args()

Lun*_*din 5

由于许多原因,VA列表很糟糕,最明显的是它们的类型安全性较差.避免他们.

在C中执行此操作的常用方法是记录函数,说如果trapLog具有此值或那个值,则不会使用它.如果它可能有任何值,那么你可以将函数重写为:

int mapgw_cm_trace (const int* trapLog, char *pcMsgId)
Run Code Online (Sandbox Code Playgroud)

并记录如果trapLog == NULL不使用它.