C++ 为什么赋值不包括extern关键字和declare变量?

C++ 为什么赋值不包括extern关键字和declare变量?,c++,extern,C++,Extern,我理解为什么这不会链接: extern bool g_WinGame; ... g_WinGame=true; 但为什么要编译和链接 extern bool g_WinGame=false; ... g_WinGame=true; 我正在使用MSVC2010 [编辑]一切都解释清楚了 这是一份声明 extern bool g_WinGame=false; 这是一个定义。在这里,extern是多余的,但却是合法的 这是一份声明 extern bool g_WinGame=false; 这是

我理解为什么这不会链接:

extern bool g_WinGame;
...
g_WinGame=true;
但为什么要编译和链接

extern bool g_WinGame=false;
...
g_WinGame=true;
我正在使用MSVC2010

[编辑]一切都解释清楚了

这是一份声明

extern bool g_WinGame=false;
这是一个定义。在这里,
extern
是多余的,但却是合法的

这是一份声明

extern bool g_WinGame=false;
这是一个定义。在这里,
extern
是多余的,但却是合法的

这是一份声明

extern bool g_WinGame=false;
这是一个定义。在这里,
extern
是多余的,但却是合法的

这是一份声明

extern bool g_WinGame=false;


这是一个定义。这里的
extern
是多余的,但是是合法的。

第二个例子中的
extern
可以忽略。这相当于bool g_WinGame=true是的,这就是问题所在,为什么它是合法的?因为声明extern似乎是合法的,但它不是……因为在使用
const
时,可以使用extern覆盖内部链接。例如,在命名空间范围中,
int const x=5
具有内部链接,但
extern int const x=5
具有外部链接。这应该是正确的答案。不知道内部/外部链接,快速搜索为我提供了所需的所有信息。谢谢请不要将答案编辑到问题中。第二个示例中的
extern
可以忽略。这相当于bool g_WinGame=true是的,这就是问题所在,为什么它是合法的?因为声明extern似乎是合法的,但它不是……因为在使用
const
时,可以使用extern覆盖内部链接。例如,在命名空间范围中,
int const x=5
具有内部链接,但
extern int const x=5
具有外部链接。这应该是正确的答案。不知道内部/外部链接,快速搜索为我提供了所需的所有信息。谢谢请不要将答案编辑到问题中。第二个示例中的
extern
可以忽略。这相当于bool g_WinGame=true是的,这就是问题所在,为什么它是合法的?因为声明extern似乎是合法的,但它不是……因为在使用
const
时,可以使用extern覆盖内部链接。例如,在命名空间范围中,
int const x=5
具有内部链接,但
extern int const x=5
具有外部链接。这应该是正确的答案。不知道内部/外部链接,快速搜索为我提供了所需的所有信息。谢谢请不要将答案编辑到问题中。第二个示例中的
extern
可以忽略。这相当于bool g_WinGame=true是的,这就是问题所在,为什么它是合法的?因为声明extern似乎是合法的,但它不是……因为在使用
const
时,可以使用extern覆盖内部链接。例如,在命名空间范围中,
int const x=5
具有内部链接,但
extern int const x=5
具有外部链接。这应该是正确的答案。不知道内部/外部链接,快速搜索为我提供了所需的所有信息。谢谢请不要在问题中编辑答案