c - 是否有一种标准方法可以保证在编译(翻译)时评估某个(常量)表达式?
问题描述
我很惊讶 C 不能保证在编译(翻译)时评估某些(常量)表达式。
C11(6.6 常量表达式)(强调):
可以在翻译期间而不是运行时评估常量表达式,...
因此,有两个问题:
- 是否有一种标准方法可以保证在编译(翻译)时评估某个(常量)表达式?
- 额外的问题:为什么C不保证呢?保证它的(技术)障碍是什么?
解决方案
这可能只是对英语的稍微模棱两可的使用:术语“can”在这里(恕我直言)用于表达表达式是编译时可评估的逻辑可能性,而不是可选的实现指令。
如果我们从标准中引用您引用的段落的全文(强调的粗斜体是我的),那么我相信可以保证评估在编译时有效地进行:
6.6 常量表达式
……<br/>描述
2 常量表达式可以在翻译期间而不是运行时进行计算,因此可以在常量可能存在的任何地方使用。
推荐阅读
- graphql - GraphQL.ExecutionError:尝试解决时出错
- mysql - mySQL 查询 - 使用 GROUP 和 HAVING 的唯一值
- javascript - React Native:在快速重新渲染屏幕期间无法按下按钮
- excel - 循环遍历所有单元格,检查单元格值是否为 X,然后将单元格复制到不同的位置
- vb.net - 按行添加数据时格式化 DataTable 列
- elasticsearch - 数组上的 Elasticsearch 术语聚合——过滤到与您的查询匹配的存储桶?
- python - 使用未与已安装的 Hydra 应用程序打包的配置
- c# - 我正在关注 Unity 路径跟踪教程,并且在 Int 类型上使用 .Select 时遇到此错误,但我不知道该行的作用
- python - 安装 web3.py 时如何消除错误
- python - 为什么我的带有 if 语句的 while 循环不起作用?