首页 > 解决方案 > 在范围内和范围外定义外部变量

问题描述

我在范围内和范围外定义了 extern a

交流

int a;

void foo(void)
{
    a = 3;
}

公元前

extern int a = 10; /*same as "extern a; int a = 10?" */


void foo(void);

int main(void)
{
    foo();
    printf("%d", a);
}

这段代码定义明确吗?

标签: csyntax

解决方案


由于a.

实现有一个通用扩展,允许多个定义,只要最多一个被初始化。

有关更多详细信息,请参阅:在公共块中具有全局变量是一种未定义的行为吗?


extern int a = 10;与 相同 与int a = 10;相同extern int a; int a = 10; 。变量定义具有外部链接,除非指定为静态(或在同一范围内已声明为静态的标识符)。


推荐阅读