我有一种情况,我希望函数的参数之一是可选的。我想知道如何实现它..?
int mapgw_cm_trace(int trapLog, char *pcMsgId, ...)
我希望traplog参数是可选的。
或者换个角度来看,如果在函数调用中未发送此参数,我将此参数设置为默认值(例如 1)...否则使用在函数调用中发送的值。是否有可能实现这一目标..?我不想使用va_args()
我有一种情况,我希望函数的参数之一是可选的。我想知道如何实现它..?
int mapgw_cm_trace(int trapLog, char *pcMsgId, ...)
我希望traplog参数是可选的。
或者换个角度来看,如果在函数调用中未发送此参数,我将此参数设置为默认值(例如 1)...否则使用在函数调用中发送的值。是否有可能实现这一目标..?我不想使用va_args()
VA 列表不好的原因有很多,最明显的是它们的类型安全性很差。避开他们。
在 C 中执行此操作的常用方法是记录函数,说如果trapLog
具有 this 或 that 的值,则不会使用它。如果它可能具有任何值,那么您可以将函数重写为:
int mapgw_cm_trace (const int* trapLog, char *pcMsgId)
并记录trapLog == NULL
它是否不会被使用。
除了可选参数的语言功能(在这里不起作用,因为他们希望您将这些参数放在最后)之外,总是有可能编写另一个函数。
int mapgw_cm_trace(int trapLog, char *pcMsgId)
int mapgw_cm_trace_with_default_traplog(char *pcMsgId)
{
// put your default as first parameter
return mapgw_cm_trace(0, pcMsgId)
}