你可以将#define扩展为字符串文字吗?

时间:2009-07-03 11:50:34

标签: c++ c-preprocessor

有没有办法让C ++预处理器将#define'ed值扩展为字符串文字?
例如:

#define NEW_LINE '\n'
Printf("OutputNEW_LINE"); //or whatever

在我看来,编辑之前它应该是可能的吗? 或者是否有更好的设计模式来实现这种行为(不需要像sprintf这样的运行时修复)?

编辑我明白#define可能是邪恶的,但为了论证而......

其他有没有人批评这种做法?

5 个答案:

答案 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);