【问题标题】:Extern variable names not visible in main?外部变量名称在 main 中不可见?
【发布时间】:2013-10-28 14:57:36
【问题描述】:

我在 C 编程 (Dennits M. Ritchie) 和 Microsoft (http://msdn.microsoft.com/en-us/library/z4ew7daa.aspx) 中读到它, 外部变量在 main 中不可见(无法访问)。

这很令人困惑,因为我多次使用以下技术。

#include<stdio.h>
int sp = 99; //extern variable
int main(){
 printf("sp is :%d",sp);     //not visible?
 sp = 98;
 printf("sp is :%d",sp); //ofcourse it is visible!
}

【问题讨论】:

  • 在 MSDN 示例中,全局变量是在 main 的定义之后声明的。
  • 如果sp 是在与您的程序链接的另一个源文件中定义的变量,您需要执行extern int sp = 99;。然后你应该可以在 main 中访问它。
  • 我专门讨论的是书中的内容,如更新后的图片所示。谢谢。
  • 仔细阅读该段落,您的解释是错误的。它与外部无关,它与声明的顺序有关。外部或函数,或变量。
  • 还是不明白,我再编译一些示例代码吧.. :(

标签: c scope extern


【解决方案1】:

你的链接有这个代码

int main() {}

int var = 0;
double val[MAXVAL];
char find( fileptr ) {}
int count( double f ) {}

然后继续说 var 和 val 在 main 中不可用。那是因为他们是 在 main 之后声明。

它与外部变量无关。仅声明顺序。


更新。这张照片说的是完全相同的事情。它们在文件中出现的顺序决定了它们的可见性。

变量在 main 中不可见的原因与它们在文件中出现的顺序有关。它们出现在 main 之后。

照片上写着:“外部变量或函数的范围从声明它的点持续到被编译器的文件末尾。”。

它没有说明外部变量在 main 中不可见。

【讨论】:

  • 但是作者说“外部变量在 main 中不可见?”是什么意思?
  • 我在您的链接中没有看到这句话。无论如何,main 与任何其他函数具有相同的可见性。您的报价似乎公然错误。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2017-12-31
  • 2014-11-18
  • 2011-12-10
相关资源
最近更新 更多