我一直在看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都应正确解析它。在整个代码中具有随机的磅/哈希符号会产生什么影响/副作用?
6
@Zaibis例如 GCC套件中预处理器的可执行文件名为“ cpp”(而编译器为gcc和g ++)
—
deviantfan
CPP代表C-Plus-Plus。
—
djeidot
@djeidot“ cpp”是不明确的。这就是为什么人们在引用C-Plus-Plus时使用“ c ++”或“ cxx”(x看起来像+ +旋转了45度)。
—
Mike Ounsworth
@djeidot不,CPP是C预处理程序。它的存在早于C ++的存在。
—
Leandros