[c++] 在C / C ++预处理程序中,它自己的行上单个井号/散列符号(#)的目的是什么?


Answers

它使源代码看起来很漂亮,就这些。

突出显示整个模块是预处理器部分的事实。

事实上,C和C ++预处理器都必须忽略一行中的#

Question

我一直在寻找Boost库的源代码,并且我已经注意到,通常没有任何预处理器指令附加在它们上面的单个井号。 我通读了GCC预处理器手册和规范指南,并且找不到任何相关内容。

(1) #ifndef BOOST_CONFIG_HPP
(2) #  include <boost/config.hpp>
(3) #endif
(4) #
(5) #if defined(BOOST_HAS_PRAGMA_ONCE)
(6) #  pragma once
(7) #endif

在第4行,英镑符号后没有任何东西。 这有什么影响? 它是否在C预处理器(CPP)规范中定义?

由于Boost是一个跨平台的库,我认为任何CPP都应该正确解析它。 整个代码中随机英镑/散列符号的效果/副作用是什么?






Links