#include <string>
using namespace std;
#define PRINT_INFO() printf("%s",__FUNCTION__)
#define PRINT(str,...) printf("%s %s", PRINT_INFO(), str, ##__VA_ARGS__)
int main() {
PRINT_INFO(); // expected output = main
PRINT("Hello %s", "World"); // expected output = main Hello World
return 0;
}
考虑上面的c++代码片段。我的意图是在PRINT()宏中使用PRINT_INFO()宏,同时打印从main发送的参数。
然而,我得到了〉〉命令被信号11终止
我怎样才能得到我想得到的东西?
1条答案
按热度按时间wvyml7n51#
想想当PRINT宏展开时会发生什么:
我觉得这不是你的本意。
也许你的意思是:
我看不出有两个宏会增加什么价值。另一个选择是:
这也提供了行信息,如果不需要,可以删除它。