在函数定义之外单独声明和初始化对象

时间:2018-06-03 22:18:57

标签: c object scope initialization declaration

我声明了一个可以有外部链接(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;
}

0 个答案:

没有答案