书上的一段话不理解,关于多个文件中常量定义的问题
这是Primer上的一段
“
在程序编译期间,在可能的情况下 ,符号常量的值会代替该名字的出现。 这个替代过程
被称为常量折叠 (constant folding )。例如, 当 INLINE 被用在一个文件中时 ,编译器用 128
代替名字 INLINE。
为了使编译器能够用一个常量值替换它的名字 ,该常量的定义 (它的初
始值 )必须在它被使用的文件中可见。因为这个原因 符号常量可以在同一程序的不同文件
中被定义多次。 尽管理想情况下, 一个具有初始值的常量可以被包含在多个不同的文件中 。
但是常量折叠使其变得并不必需 ,甚至在可执行文件只要出现一次就行。”
根据这段文字,我的理解是:
因为要实施常量折叠--->常量的初始值必须在使用它的文件中可见---->常量必须在每个使用它的文件中定义----->C++语法允许常量在不同文件中多次定义
也就是说,因为要实现常量折叠,所以要在每个用到常量的文件里定义一次
但最后一句又说“常量折叠使其变得并不必需 ,甚至在可执行文件只要出现一次就行。”
而且,第一句开头就说了,常量折叠是“在程序编译期间”。既然是在编译期间,那和可执行文件就没多大关系了吧,为什么要在可执行文件中出现一次。