【发布时间】:2016-05-14 10:45:34
【问题描述】:
我一直在查看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 都应该正确解析它。在整个代码中使用随机井号/哈希符号会产生什么影响/副作用?
【问题讨论】:
-
@Zaibis 例如。 GCC 套件中预处理器的可执行名称是“cpp”(而编译器是 gcc 和 g++)
-
CPP 代表 C-Plus-Plus。
-
@djeidot "cpp" 不明确。这就是为什么人们在提到 C-Plus-Plus 时使用“c++”或“cxx”(x 看起来像 + 转了 45 度)。
-
@djeidot 不,CPP 是 C-PreProcessor。它在 C++ 出现之前就已经存在了。
标签: c++ c boost c-preprocessor