有没有办法让C ++预处理器将#define'ed值扩展为字符串文字?
例如:
#define NEW_LINE '\n'
Printf("OutputNEW_LINE"); //or whatever
在我看来,编辑之前它应该是可能的吗? 或者是否有更好的设计模式来实现这种行为(不需要像sprintf这样的运行时修复)?
编辑我明白#define可能是邪恶的,但为了论证而......
其他有没有人批评这种做法?
答案 0 :(得分:25)
这样做:
#define NEW_LINE "\n" // Note double quotes
Printf("Output" NEW_LINE);
(从技术上讲,编译器加入字符串而不是预处理器,但最终结果是相同的。)
答案 1 :(得分:6)
如果我没记错的话,那就是
Printf("Output" NEW_LINE);
答案 2 :(得分:2)
您可以执行以下操作。
#define NEW_LINE "\n"
printf("Output" NEW_LINE);
答案 3 :(得分:1)
#define NEW_LINE "\n"
printf("Output" NEW_LINE); //or whatever
应该这样做。
答案 4 :(得分:-1)
渴求
printf("Output%s", NEW_LINE);