【发布时间】:2010-10-24 10:28:42
【问题描述】:
关于C++预处理器的几个问题:
- 如何让预处理器换行进入预处理代码?
- 如何让预处理器在预处理代码中插入一个制表符或多个空格?
- 如何让预处理器在预处理代码中插入cmets?
【问题讨论】:
-
我不知道,但我看到了 3 个问题。
-
这些问题没有意义。例如,为什么要“插入 cmets”?
标签: c++ c-preprocessor
关于C++预处理器的几个问题:
【问题讨论】:
标签: c++ c-preprocessor
关于#3,从代码中删除 cmets 是预处理器的责任,我认为不允许将它们留在其中。无论如何,这将是特定于 C++ 编译器的标志你正在使用,所以你应该指定你的环境。
【讨论】:
正如其他人所概述的那样,问题 2) 和 3) 没有多大意义。
至于问题1,我假设你的意思是多行宏,可以这样完成:
#define FOO line 1 \
line 2 \
line 3 \
... \
line n
注意最后一行缺少的\!
【讨论】:
1) 正如蒂姆指出的那样,使用反斜杠
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) 不要这样做,这很愚蠢。
【讨论】:
如何让预处理器换行进入预处理代码?
为什么?
如何让预处理器在预处理代码中插入一个制表符或多个空格?
为什么?
如何让预处理器将cmets插入到预处理代码中?
为什么?
预处理器是一个pre处理器,它在代码转换成机器码之前运行。您要添加的空格和 cmets 不会影响应用程序的输出。
如果你试图控制gcc -E 的输出或类似的东西,那么你就找错了树。
【讨论】:
你做错了... PREPROCESSOR 不是为了那个目的。
【讨论】: