c++ - 宏作为函数参数的默认参数

标签 c++ function macros default arguments

我正在写日志文件。我更愿意在那里使用宏 __FUNCTION__。我不喜欢这样的方式:

Logger.write("Message", __FUNCTION__);

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

void write(const string &message, string functionName = __FUNCTION__)
{
   // ...
}

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

最佳答案

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

#define log(msg) Logger.write(msg, __FUNCTION__)

缺点是在使用这个宏时你需要在范围内有Logger

关于c++ - 宏作为函数参数的默认参数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/3493210/

相关文章:

javascript - 我无法在闭包内定位正确的范围

scala - 如何在 Scala 中访问宏注释中的泛型类型?

c++ - 如何将除第一个参数之外的所有参数扩展为可变参数宏?

c++ - 如何将宏值扩展为宽字符串?

c++ - 可变参数模板未在 MSVC 中编译?

c++ - 编译器认为 "A(A&)"暂时接受右值?

c++ - 从函数指针静态推断标准 C++98 中的函数类型参数

c++ - 如何将控制台输出数据输入命令提示符?

function - 重复的textButtons和子容器-有没有办法使这段代码更短?

python - 在 Python 中查找函数的参数