双11狂欢大促

盲盒赢 定制羽绒服

开启惊喜盲盒,抽取你的专属好礼

— 惊喜奖品抢先看 —

书上的一段话不理解,关于多个文件中常量定义的问题

hhddzz hhddzz 墨衍会员 · AI 创作全网分发 墨衍智能分发 通过墨衍一键同步至各平台 可同步平台 CSDN微信公众号微博知乎掘金百家号博客园抖音小红书 你的文章也可以这样分发 墨衍会员 ¥399起/年,写一次发全网 我也要 + 加入社区
这是Primer上的一段
“
在程序编译期间,在可能的情况下 ,符号常量的值会代替该名字的出现。 这个替代过程
被称为常量折叠 (constant folding )。例如, 当 INLINE 被用在一个文件中时 ,编译器用 128
代替名字 INLINE。
为了使编译器能够用一个常量值替换它的名字 ,该常量的定义 (它的初
始值 )必须在它被使用的文件中可见。因为这个原因 符号常量可以在同一程序的不同文件
中被定义多次。 尽管理想情况下, 一个具有初始值的常量可以被包含在多个不同的文件中 。
但是常量折叠使其变得并不必需 ,甚至在可执行文件只要出现一次就行。”

根据这段文字,我的理解是:
因为要实施常量折叠--->常量的初始值必须在使用它的文件中可见---->常量必须在每个使用它的文件中定义----->C++语法允许常量在不同文件中多次定义
也就是说,因为要实现常量折叠,所以要在每个用到常量的文件里定义一次
但最后一句又说“常量折叠使其变得并不必需 ,甚至在可执行文件只要出现一次就行。”
而且,第一句开头就说了,常量折叠是“在程序编译期间”。既然是在编译期间,那和可执行文件就没多大关系了吧,为什么要在可执行文件中出现一次。
...全文

相关推荐

评论 6
收藏 已收藏
分享
返回顶部
hhddzz
C++ 语言 65,214 成员 250,514 内容