宏作为函数参数的默认参数

Max*_*rai 0 c++ macros arguments default function

我正在写记录器文件。我更喜欢在那里使用宏__FUNCTION__。我不喜欢这样的方式:

Logger.write("Message", __FUNCTION__);
Run Code Online (Sandbox Code Playgroud)

也许,有可能做这样的事情:

void write(const string &message, string functionName = __FUNCTION__)
{
   // ...
}
Run Code Online (Sandbox Code Playgroud)

如果没有,有没有什么方法可以不用手来做这些事情(我的意思是传递函数名)?

Job*_*Job 5

您可以通过将其全部包装在一个宏中来做类似的事情:

#define log(msg) Logger.write(msg, __FUNCTION__)
Run Code Online (Sandbox Code Playgroud)

缺点是您Logger在使用此宏时需要在范围内。