c - 在范围内和范围外定义外部变量
问题描述
我在范围内和范围外定义了 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);
}
这段代码定义明确吗?
解决方案
由于a
.
实现有一个通用扩展,允许多个定义,只要最多一个被初始化。
有关更多详细信息,请参阅:在公共块中具有全局变量是一种未定义的行为吗?
extern int a = 10;
与 相同 与int a = 10;
相同extern int a; int a = 10;
。变量定义具有外部链接,除非指定为静态(或在同一范围内已声明为静态的标识符)。
推荐阅读
- tensorflow - 如何在 tensorflow 项目中可视化数据流
- python - 给定输入大小为 2 个单词,三元组预测下一个单词的行为应该是什么?
- r - 如何在循环中按字符名访问列表中的列表?
- apache-camel - Apache Camel 3.X 迁移 - ClassNotFoundException: org.apache.camel.impl.BreakpointSupport
- c++ - 使用 -Wall 和 -Wextra 对未使用的 lambda 没有警告
- r - 如何通过翻译 R 中的序列获得完整的氨基酸名称?
- xslt - 在 Xslt 1.0 中为 Datetime 添加 3 小时
- python-3.x - 根据Python中的另一个列表消除一个列表
- r - 根据百分比创建一个重复数字数组
- python - AttributeError:“str”对象没有属性“apps”