声明与c中的定义

Baz*_*oka 8 c

最近在学习c编程时我发现了一些我觉得有趣的东西.我曾经读过,类似的语句int i=0;是强制定义的唯一方法,而语句就像extern int i;强制声明一样.类似的陈述int i;将取决于上下文.但是当我将extern与初始化相结合时会发生什么extern int i=13;.编译器生成警告.但这条规则对此有何规定?

Alo*_*ave 5

这是一个编码样式警告
该参数是有效的代码,但对于C来说却极具特色,因为通常期望“ extern”表示该声明未提供该对象的定义。

extern int i=13;  
Run Code Online (Sandbox Code Playgroud)

声明和定义i,而:

extern int i;      
Run Code Online (Sandbox Code Playgroud)

只是声明变量i

在GCC上已引发了一个特定的错误45977,但仍显示未确认状态。

错误报告指出,该代码在语法上符合C标准。并进行了详细讨论。


对于标准风扇:
相关章节参考为:
ansi c99标准6.2.2:标识符
ansi c99标准6.9.2.4的链接