次の2つのファイルがあります
//###########
//a.cpp
//###########
#include <iostream>
int main()
{
extern int var; //Why is this allowed?
std::cout << var << std::endl;
var = 99; //Core dump happens here
std::cout << var << std::endl;
return 0;
}
と
//###########
//b.cpp
//###########
extern const int var = 41;
ここでは、コンパイルとリンクは問題なく行われます。実行すると、「var」の値を 99 に設定しようとしているときにコア ダンプが表示されます。a.cpp で非 const var を宣言できる理由を知りたいです。リンカーはこれをリンクできませんか?