转载至:https://www.cnblogs.com/herenzhiming/articles/5442893.html
常变量在定义的时候必须初始化,所以当你在a.cpp中定义extern const double pi=3.14; b.cpp中extern const double pi; 当编译系统发现a.cpp中的全局常变量时,就知道它pi是常量,而换过来的时候,在a.cpp中定义const double pi=3.14; b.cpp中extern const double pi; 编译系统在编译a.cpp是没有问题的,但到了b.cpp中就会发现,有一个外部常量是没有初始化的,而常量是不能在声明后再进行定义的,所以编译系统会认为找不到它的定义,所以就出错。