我声明了一个可以有外部链接(Global对象)的对象,然后我在函数定义之外初始化它。海湾合作委员会发出警告(见下文)。
AFIAK,您可以声明一个对象,然后在函数定义之外的同一语句(带有初始化程序的声明符)中定义它(例如int a = 5;
)。应用相同的语义,为什么C不接受函数定义(Scope)之外的单独声明和初始化?
/* Works fine */
int a = 5;
int main () {
return 0;
}
/* GCC says:
warning: data definition has no type or storage class
warning: type defaults to ‘int’ in declaration of ‘a’
*/
int a;
a = 5;
int main () {
return 0;
}