因为你声明了extern,所以第二个不合法。因为extern表示使用外部变量,而const变量只能在声明变量时初始化一次。而extern变量就是外部已经定义了一个变量,所以此处就不能再初始化了。
一个变量可以被声明多次,但是只能被定义一次。
我似乎记得C++的静态型变量不能像这样定义后直接赋值的.要在外部赋值.
第一个是声明变量i在外部定义第二个是声明变量,而你的意思似乎是定义变量。把extern去掉就好了。