Concat用于预定义的宏

时间:2015-03-31 07:11:30

标签: c++ 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的大宏也不是有效的解决方案;)。

1 个答案:

答案 0 :(得分:1)

您可以使用以下内容:

#define LOG_LINE (std::string(__FILE__ " ") +  __FUNCTION__ + " " + std::to_string(__LINE__))

Live example