C/C++ 如何将宏参数扩展为引号之间的文本
C/C++ How to expand a macro parameter into text between quotes
这是我所拥有的(message()是来自第三方库的专用日志记录函数):
#define LOG(fmt, ...) message("%s %s(): #fmt", __FILE__, __func__, __VA_ARGS__);
所以我希望能够做这样的事情:
LOG("Hello world")
LOG("Count = %d", count)
并使其扩展到:
message("%s %s(): Hello world", __FILE__, __func__);
message("%s %s(): Count = %d", __FILE__, __func__, count);
但是 #fmt 的事情不起作用。它不计算宏参数,并打印为"#fmt"。有可能做我想做的事情吗?
不要把#fmt
放在引号里。只需使用字符串文本连接来连接两个文本。
#define LOG(fmt, ...) message("%s %s(): " fmt, __FILE__, __func__, __VA_ARGS__);
相关文章:
- 正则表达式 获取两个换行符之间的文本
- 如何读取特定单词之间的文本文件?
- 在文本中的两个非唯一字符串之间获取子弦
- 在C++代码中,如何让用户在2个文本字符串之间输入一个数字
- 如何使用选项卡键在文本框之间更改焦点
- 如何使用C#或C 之间创建文本框之间的链接
- 删除两个字符之间的文本
- 以二进制和文本打开文件之间的区别
- C++在 ActiveDirectory 和 Sqlite3 之间复制文本数据时出现问题
- C/C++ 如何将宏参数扩展为引号之间的文本
- 我正在制作语法高亮笔,但在引号之间为文本着色时遇到问题
- 如何在Ruby和其他语言之间共享文本文件(或互斥/信号量)
- 在指针之间打印文本
- 如何在两个HTML标签之间获得特定的文本
- 在函数之间的c++代码中插入文本
- 需要读取文本文件中某些字符之间的文本
- 删除字符串中两个字符(括号)之间的文本
- Istringstream不会在引号之间标记文本
- C++比较两个不同文本文件之间的单词
- 以字符串形式发送文本和在引号之间发送文本之间的区别