小编all*_*ter的帖子

编译单元之间共享的全局const对象

当我声明并初始化一个const对象时.

// ConstClass.h
class ConstClass
{
};

const ConstClass g_Const;
Run Code Online (Sandbox Code Playgroud)

两个cpp文件包含此标头.

// Unit1.cpp
#include "ConstClass.h"
#include "stdio.h"

void PrintInUnit1( )
{
    printf( "g_Const in Unit1 is %d.\r\n", &g_Const );
}
Run Code Online (Sandbox Code Playgroud)

// Unit2.cpp
#include "ConstClass.h"
#include "stdio.h"

void PrintInUnit2( )
{
    printf( "g_Const in Unit2 is %d.\r\n", &g_Const );
}
Run Code Online (Sandbox Code Playgroud)

当我构建解决方案时,没有链接错误,你会得到什么如果g_Const是一个非const基本类型!

PrintInUnit1()和PrintInUnit2()表明在两个编译单元中有两个独立的"g_Const"具有不同的地址,为什么?

==============

我知道如何修复它.(使用extern关键字进行声明,并在一个cpp文件中定义它.)

我想知道为什么我在这个示例中没有得到redfined链接错误.

c++ const global-variables hyperlink

6
推荐指数
2
解决办法
2019
查看次数

标签 统计

c++ ×1

const ×1

global-variables ×1

hyperlink ×1