关于C ++预处理器的几个问题:

时间:2010-10-24 10:28:42

标签: c++ c-preprocessor

关于C ++预处理器的一些问题:

  1. 如何让预处理器进入预处理代码的新行?
  2. 如何让预处理器在预处理代码中插入制表符或多个空格?
  3. 如何让预处理器在预处理代码中插入注释?

5 个答案:

答案 0 :(得分:6)

关于#3,预处理器负责从代码中删除注释,我认为不允许将它们留在其中。在任何情况下,这都是特定于C ++编译器的标志。你正在使用所以你应该指定你的环境。

答案 1 :(得分:4)

问题2)和3)没有太大意义,正如其他人所概述的那样。

关于问题1,我假设您的意思是多行宏,可以这样做:

#define FOO line 1 \
    line 2  \
    line 3  \
    ...     \
    line n

请注意最后一行丢失的\

答案 2 :(得分:2)

  

如何让预处理器进入预处理代码的新行?

为什么?

  

如何让预处理器在预处理代码中插入制表符或多个空格?

为什么?

  

如何让预处理器在预处理代码中插入注释?

为什么?

预处理器是 pre 处理器,它在代码转换为机器代码之前运行。要添加的空格和注释不会影响应用程序的输出。

如果你试图控制gcc -E的输出,或类似的东西,那么你就会咆哮错误的树。

答案 3 :(得分:2)

你做错了...... PREPROCESSOR不是为了那个目的。

答案 4 :(得分:2)

1)使用反斜杠,Tim指出

2)我认为你不能

3)

#define COMMENT /##/ this is a comment
#define CPPCOMMENT(c) /##/ c
#define CCOMMENT(c) /##* c *##/

COMMENT
CPPCOMMENT(This is a c++ comment)
CCOMMENT(This is a c comment)

修改

2警告

1)不适用于所有编译器。

2)不要这样做,这是愚蠢的。