我想从__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的大宏也不是有效的解决方案;)。
答案 0 :(得分:1)
您可以使用以下内容:
#define LOG_LINE (std::string(__FILE__ " ") + __FUNCTION__ + " " + std::to_string(__LINE__))