我想从 __FILE__
生成单个字符串, __FUNCTION__
, 和 __LINE__
预定义的宏。
#define LOG_LINE __FILE__ " " __FUNCTION__ " " __LINE__
这可能行不通,因为编译器 concat 不适用于 __LINE__
的整数是。
#define LOG_LINE __FILE__ __FUNCTION__
也行不通,因为:
error: expected ';' before '__FUNCTION__'
如何实现
std::cout << LOG_LINE
这将扩展到例如main.cpp main 8
?
解决方法:
#define LOG_LINE __FILE__ << " " << __FUNCTION__
不满足我,因为有时我想将它用作字符串(带有 sstream 的大宏也不是有效的解决方案;)。
最佳答案
您可以使用以下内容:
#define LOG_LINE (std::string(__FILE__ " ") + __FUNCTION__ + " " + std::to_string(__LINE__))
关于c++ - Concat 用于预定义的宏,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/29362687/