【问题标题】:using auto variables for global scope使用全局范围的自动变量
【发布时间】:2014-01-06 13:51:35
【问题描述】:
auto int a=5;
#include<stdio.h>
int main ()
{
    printf("%d",a);
    return 0;
}

我已经读到自动变量的范围在指定的块内。在上面的程序中,由于自动变量“a”是在 main 函数之外声明的,所以它应该被分配全局范围并且可以在 main 中访问。但是,似乎有错误。

【问题讨论】:

  • @SouravGhosh 我认为这不是真的。它只会输出 5 (或其他),然后立即出现命令行提示符。如果它以回车开头,那将是一个问题。

标签: c


【解决方案1】:

顶级变量不能是auto。它们应该被声明为staticextern(在别处定义)或全局(没有关键字)。

这不会编译。

$ echo "auto int c;" > test.c
$ gcc -Wall -c test.c
test.c:1:10: error: file-scope declaration of ‘a’ specifies ‘auto’

【讨论】:

  • 我读过默认情况下变量是c中的自动变量。对于这段代码 int a=5; #include int main () { printf("%d",a);返回0;这不是说变量 a 是一个自动变量吗?如果是,为什么它在这种情况下有效?哪些语言支持全局声明下的自动变量?
  • @VarunKumarChepuri:它们是 auto 仅在函数内部。
  • 函数外的默认变量是什么?
  • @VarunKumarChepuri:全局范围,即外部链接(变量在程序的其他模块中也可见)。
【解决方案2】:

在 C 中,不允许使用全局范围 auto 变量。根据定义,它们是函数局部变量。

【讨论】:

    【解决方案3】:

    自动变量只能在它们已声明的块/函数内部访问,而不能在全局外部访问。

    在 C 编程中,这些变量默认是自动的,在函数中声明。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2012-04-29
      • 2017-02-17
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2013-05-26
      • 2010-10-07
      • 1970-01-01
      相关资源
      最近更新 更多