有没有办法在#include之后写注释而不是注释?

时间:2018-04-23 06:52:56

标签: c++

我试图弄清楚是否可以在文本编辑器的同一行上编写有效的C ++代码。这对于主要功能来说并不太棘手,因为一切都是以半冒号分隔的;但是,在#include语句之后无法找到编写可执行代码的方法。

我理解#include语句是预处理的一部分,因此它们的处理方式可能是特定于编译器的,所以我进入了g ++文档来查看这些语句是如何处理的,并且无法找到任何答案。我尝试了一个分号,\nstd::endl/* */,以及几乎所有我能想到的内容都没有成功。

我的猜测是,任何解决方案都必须欺骗编译器在换行后才考虑所有代码,但我不确定这是否可行。这纯粹是为了运动,我明白没有必要使用这种功能,而且这种风格很糟糕。

2 个答案:

答案 0 :(得分:3)

不,那是不可能的。

C ++翻译在多个阶段完成(至少在概念上定义)。在预处理阶段之后,空白(包括换行符)不再重要,源代码只是一个令牌流。但是,仅在预处理后才应用

在预处理阶段,空格和换行仍然很重要。最重要的是,C ++语法有效地将预处理程序指令定义为:

optional-whitespace # optional-preprocessor-keyword other-content new-line < / EM>

因此换行符是语法的一部分,不能跳过。

(由于这是在标准中定义的,因此它也不受编译器特定处理的影响。)

答案 1 :(得分:1)

只有绕过预处理器才能实现,因为一旦预处理器看到#include,那么该行的其余部分将保留用于您所包含的内容。

可以向编译器提交一行。为此,您需要设置工具链以仅运行 预处理器,将输出按到一行,然后进行编译。