gaa*_*kam 6 c++ comments preprocessor-directive
我在考虑这样的事情:
#include <iostream> // Comment
Run Code Online (Sandbox Code Playgroud)
那么,cppreference.com(http://en.cppreference.com/w/cpp/preprocessor)声称:
预处理指令控制预处理器的行为.每个指令占用一行,格式如下:
#character preprocessing指令(define,undef,include,if,ifdef,ifndef,else,elif,endif,line,error,pragma之一)参数(取决于指令)换行符
这么好,给出了整条生产线的完整规范,并且没有地方可以在那里发表评论.在这些方面不允许建议评论.
但是,即使使用-Wall -Wextra -Wpedantic,g ++和clang ++都接受这样的输入.此外,cplusplus.com提供了此类评论的示例:http://www.cplusplus.com/reference/istream/istream/operator%3E%3E/
更让我感到困惑的是,有人告诉我" 在#行中发表评论仍然有效,但它们可能并不意味着你想要的东西 ".我不确定这是怎么回事,因为根据http://en.cppreference.com/w/cpp/language/translation_phases评论在启动预处理器之前被空格字符替换 - 所以如果它们被允许的话#行,它们怎么会干扰这种#行的语义?
Bar*_*mar 11
如您链接到的翻译阶段文档中所述:在第3阶段的步骤3中,注释被替换为空格.预处理器在阶段4中执行.
因此,当预处理器处理#行时,注释已变为空白,这通常不会影响预处理指令的行为.