【发布时间】:2013-02-08 05:13:27
【问题描述】:
考虑两个具有静态存储持续时间和相等的常量初始化器的对象:
static const int a = 50;
static const int b = 50;
编译器将这些组合成&a == &b 是否有效?
(对于上下文,我正在考虑使用静态常量对象来获取唯一地址以用作标记指针值。如果编译器组合这些对象是合法的,并且我对两个这样的对象使用相同的常量值,那么地址可能相等,我不能将它们用作标记值。)
【问题讨论】:
-
嗯...字符串可以被池化。所以如果我不得不猜测,这实际上可能是允许的。
-
本质上,您的问题是具有静态存储持续时间的对象保证具有唯一地址。答案是否,该标准不强制要求任何此类保证。
-
相关(虽然不同,由于缺少
static):Areconstvariables required to be distinct in memory?
标签: c c99 language-lawyer sentinel