我对全局常量有点困惑。我(初级)的理解是“全局”变量是在块之外定义的并且具有程序范围(来源: http: //www.learncpp.com/cpp-tutorial/42-global-variables/)。但是程序:
#include <iostream>
const double x=1.5;
int main(){
std::cout << "1) x=" << x << std::endl;
double x=2.5;
std::cout << "2) x=" << x << std::endl;
//const double x=3.5;
return 0;
}
在 g++(GCC,最新的 64 位版本)中编译没有任何问题,即使使用 -Wall。
输出:
1) x=1.5
2) x=2.5
这让我很困惑。第一个 cout 评估的事实意味着 main 将“x”识别为“全局”变量(它没有在 main 的范围内定义)。如果是这样,为什么它让我重新定义'x'?
然后,如果您取消注释已注释的第三个声明,g++ 会引发重新声明错误。意思是,从我定义的意义上说,我的第一个声明不可能是“全球性的”:S
编辑:好的,问题与全局变量无关,但范围:例如http://pastebin.com/raw.php?i=V5xni19M中的相同问题