c++ - Concat 用于预定义的宏

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

最佳答案

您可以使用以下内容:

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

Live example

关于c++ - Concat 用于预定义的宏,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/29362687/

相关文章:

c++ - 以编程方式检查数字签名

c++ - Clang vs GCC vs MSVC - 使用大括号括起来的初始化列表来创建用户定义的类型?

c++ - 根据标准,这个 constexpr offset_of 的定义是否正确?

c - 是否可以在运行时使用宏或任何其他功能来访问具有相同成员的不同结构?(结构更新))

c++ - 在编译时区分 C++ 中的静态和非静态方法?

c++ - 为什么 typeid.name() 使用 GCC 返回奇怪的字符以及如何使它打印未损坏的名称?

c++ - 计算正方形的法线

c - 计算参数数量的宏

python - 在Python中,如何在不更改命名空间的情况下以宏样式将一个文件包含(而不是导入)另一个文件中?

C++ 循环宏