1

是否可以防止功能参数评估?因为我不想在某些情况下评估函数参数。

例如,要记录调试消息,

void log(int severity, ...);

我想记录一条消息

log(DEBUG, "%s", getErrorMsg().c_str());

如果严重性为 DEBUG,则日志功能只是以发布二进制文件的形式返回。因此,没有必要评估 getErrorMsg();

4

2 回答 2

1

您传递给函数的任何参数将始终在进入函数之前进行评估。

您可能想要传递类似指针的东西,因此指针本身就是被评估的内容,并且您仅在必要时/如果需要时通过该指针调用函数。

于 2012-08-24T05:50:54.083 回答
1

您可以使用宏:

#define log(severity, ...) if (severity!=DEBUG) log_impl(severity,__VA_ARGS__);
于 2012-08-24T09:37:34.070 回答