【发布时间】:2018-12-26 07:37:24
【问题描述】:
我想创建一个宏来打印一些信息并在需要时使用任意数量的参数来打印其他消息。
这里有一段代码 sn-p 我正在谈论:
#include <stdio.h>
#define print(msg, ...) \
printf("Line: %d File %s "## msg, __LINE__ , __FILE__, __VA_ARGS__);
int main()
{
print("Msg: %d", 13);
print("Msg: %d, Msg2: %d", 123, 234);
}
这是我得到的一个错误:
main.cpp:12:9: error: pasting ""Line: %d File %s "" and ""Msg: %d"" does not give a valid preprocessing token
printf("Line: %d File %s "## msg, __LINE__ , __FILE__, __VA_ARGS__);
我做错了什么?
【问题讨论】:
-
你为什么要写 C 代码并假装它是 C++?
-
@paxdiablo 文件名是main.cpp,所以我认为是C风格的C++代码。
-
@mch: 是的,因此我的评论中的“假装”子句 :-) C 风格的 C++ 代码,正如您雄辩地指出的那样,可能是您 worst 的事情可以做学习C++。话虽如此,它是
main.cpp确实这一事实表明 C++,所以我将恢复 C++ 标记(并删除 C 标记) - 一个问题应该同时具有两者的情况非常罕见。