【问题标题】:using extern with different type but same name variable in C在C中使用具有不同类型但名称相同的变量的extern
【发布时间】:2013-06-01 11:24:48
【问题描述】:

我在一个 C 文件中有int a[]。现在在另一个 .c 文件中我有 extern int *a

我需要知道如果我尝试访问第二个文件中的变量a 会出现什么行为,为什么? 会出现什么问题?

【问题讨论】:

  • 抱歉打错字了。实际上两者的名字都一样 'a'

标签: c extern


【解决方案1】:

未定义的行为。所以任何事情都可能发生。

【讨论】:

  • 能否请您详细说明为什么未定义的行为?
  • @vaibhavshukla:因为标准是这样说的。 (请参阅 C99 的第 6.2.7 节。)在更实际的层面上,请参阅此处的一些答案:stackoverflow.com/questions/6385850/…
  • 如果我在第二个文件中包含第一个文件怎么办?会有什么结果?链接错误还是编译器错误?
  • @vaibhavshukla:你可以试试... ;)
  • :) 我一定会的。但在得出结论之前,仍然希望对这个概念有更多了解。
【解决方案2】:

如果两次包含文件(声明)或声明的变量名为a,则可能会出现错误重新定义a;

当我尝试上述编译器时显示错误:

conflicting types for a;
//previous definition in other file...

【讨论】:

  • @dinesh:我不这么认为bcoz extern关键字说它是一个声明而不是定义或者说当我们说extern时,这意味着其他文件变量的某个地方已经定义了,那么重定义错误怎么来?
猜你喜欢
  • 2020-12-09
  • 2023-03-14
  • 1970-01-01
  • 1970-01-01
  • 2013-02-28
  • 1970-01-01
  • 1970-01-01
  • 2018-08-18
  • 1970-01-01
相关资源
最近更新 更多