c++ - C++ 标头单元导入语法
问题描述
在当前的 C++ 草案(2019 年 8 月)中,pp-import
http ://eel.is/c++draft/cpp.import#nt:pp-import 的语法允许pp-tokens
在header-name
或header-name-tokens
.
该部分的当前版本是P1703: "Recognizing Header Unit Imports Requires Full Preprocessing"的结果。在此提议引起的更改之前,语法仍然允许在或之后预处理标记标记,但以 a 的形式。(P1103 的 [ cpp.module ] 部分)。header-name
header-name-tokens
pp-import-suffix
在这种情况下允许额外的、未使用的预处理令牌背后的原因是什么?
谢谢你。
解决方案
它们在那里允许属性。
阶段 7(解析和语义分析)语法没有改变。导入时仍允许使用属性。以前,阶段 4(预处理器)语法试图限制更多允许作为导入的内容,以强制执行以下规则:
只有当翻译阶段 4 产生的令牌序列直到导入令牌形成一个导入序列,并且导入令牌不在另一个的 header-name-tokens 或 pp-import-suffix 内时,才会识别 pp-import pp-进口。
新规则进一步限制了它,每行不允许超过一个导入,因此不再需要此规则及其相关语法。
推荐阅读
- gremlin - gremlin 在两个顶点之间添加顶点 - 在单个查询中?
- c# - 使用 DTOList 更新表
- php - 语法错误:第 0 行,第 72 列:错误:预期的字符串结尾,得到 'b6f037'
- vaadin - Vaadin 加载微调器
- javascript - 在 post 请求中发送带有文件的数据
- javascript - Vue js - 将数据传递给 Vue js 组件中的道具
- api - DomainBox REST API 错误 - 提交请求时出错
- javascript - 是否可以为单独的 axios 实例创建单独的 vue 路由器?
- python - 如何覆盖 Django 序列化程序中的外键空值?
- html - 单击操作后如何重置jQuery