【发布时间】:2013-12-21 06:11:03
【问题描述】:
当我声明并初始化一个 const 对象时。
// ConstClass.h
class ConstClass
{
};
const ConstClass g_Const;
两个cpp文件都包含这个头文件。
// Unit1.cpp
#include "ConstClass.h"
#include "stdio.h"
void PrintInUnit1( )
{
printf( "g_Const in Unit1 is %d.\r\n", &g_Const );
}
和
// Unit2.cpp
#include "ConstClass.h"
#include "stdio.h"
void PrintInUnit2( )
{
printf( "g_Const in Unit2 is %d.\r\n", &g_Const );
}
当我构建解决方案时,没有链接错误,如果 g_Const 是非常量基本类型,你会得到什么!
而 PrintInUnit1() 和 PrintInUnit2() 表明两个编译单元中有两个地址不同的独立“g_Const”,为什么?
==============
我知道如何解决它。(使用extern关键字声明,并在一个cpp文件中定义它。)
我想知道为什么我在这个示例中没有收到 redfined 链接错误。
【问题讨论】:
标签: c++ hyperlink global-variables constants