9

C++ 中的普通常量变量默认为内部链接。假设如果我有以下内容:

  • 我在头文件中定义了一个常量变量(const int var = 2

  • 然后我将标题包含在两个 cpp 文件中。

如果我尝试在两个 cpp 文件中获取该 const 变量的地址(即&var),那么这两个地址是否相同?我还需要一个小的工作代码来验证这个事实。

我不得不将其发布为一个问题,因为我是新手,因此无法在此线程中给出的答案的评论中问它。

4

3 回答 3

5

由于C++内部链接,它不会相同 - 这是两个不同的对象。反之亦然,C并且const将具有外部链接,因此由于重新定义,您将收到链接错误。

于 2012-11-23T13:41:20.807 回答
2

那么这两个地址会相同吗?

不会。因为头文件在编译期间包含在 *.cpp 文件中,所以每个包含头文件的 *.cpp 都会创建自己的常量。

但是,如果您extern const int var;在 header 中使用并在 *.cpp 中设置默认值,它们应该是相同的。

于 2012-11-23T15:23:48.260 回答
0

变量将具有不同的地址。也有可能,如果您没有在任何地方引用变量地址,则变量将在编译期间用他的值替换,并且在二进制文件中您根本找不到变量值。

于 2012-11-23T14:03:51.237 回答