如果一个变量在函数体外部声明,那么可以给extern关键字标记的变量赋一个初始值,此时extern失效,不再是声明,变成了定义如果一个变量在函数体内部声明,那么此时如果试图初始化一个extern关键字标记的变量,将引发错误。这原理是什么呢?为什么在外部和函数体内部声明,编译器会有不一样的处理方式呢?