【发布时间】:2021-08-18 01:18:57
【问题描述】:
我在作用域内和作用域外定义了extern a
交流
int a;
void foo(void)
{
a = 3;
}
b.c
extern int a = 10; /*same as "extern a; int a = 10?" */
void foo(void);
int main(void)
{
foo();
printf("%d", a);
}
这段代码定义明确吗?
【问题讨论】:
-
int a;定义变量。然而extern int a = 10;也 定义了它。应该只有一个定义。所以我建议你在第一个文件中将其更改为int a = 10;,在第二个文件中更改为extern int a;,这样就只是一个声明。 -
我认为这表明人们普遍缺乏对 extern 关键字的理解,并不是说这有什么问题,我是如何翻阅我的笔记并将其标记为解释关键字的体面来源的。 journaldev.com/38985/extern-keyword-in-c
-
你为什么要这样做?
-
有人问我这个问题。
-
@도라에몽1 最好在头文件中声明变量。