Concat 用于预定义的宏
Concat for predefined macros
我想从 __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__))
我想从 __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__))