我一直在看这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都应该正确解析它.在整个代码中使用随机的磅/哈希符号会有什么影响/副作用?

推荐答案

一条线上的#本身根本没有效果.我想这是为了美学价值.

C标准规定:

6.10.7 Null directive

Semantics

表单的预处理指令

# new-line

没有任何效果.

C++标准同样地说:

16.7 Null directive [cpp.null]

表单的预处理指令

# new-line

没有任何效果.

C++相关问答推荐

-O and -wrap的行为

插入元素后,Sizeof操作符无法正常工作

为什么海湾合作委员会在共享对象中的. init_data的虚拟内存地址之前留出一个空白

为什么listen()(在调用accept()之前)足以让应用程序完成3次握手?

VS代码C/C++扩展intellisense无法检测环境特定函数'

标准的C17标准是用括号将参数包装在函数声明中吗

如何使fputs功能提示错误输入并要求用户重新输入.程序停止而不是请求新的输入

如何调试LD_PRELOAD库中的构造函数?

LibpCap禁用监视器模式(C、MacOS)

为什么我一直收到分段错误?

LONG_DOUBLE_T是否存在(标准C:C23)

字符是否必须转换为无符号字符,然后才能与getc家族的返回值进行比较?

防止规范模式在C++中 echo 特殊字符

cairo 剪辑区域是否存在多个矩形?

致命错误:ASM/rwan ce.h:没有这样的文件或目录.符号链接还不够

';\n&39;和';\r&39;中的';\n&39;之间有什么关系?

如何逐位读取二进制文件?

为什么我的旧式&q;函数在传递浮点数时会打印2?

指向返回 struct 成员的指针,安全吗?

const struct 成员的 typedef 中的灵活数组大小