为什么编译器没抱怨变量被重新定义?

时间:2017-01-23 00:28:50

标签: c gcc

我创建了一个简单的test.c文件:

#include <stdio.h>

int a;

int a = 100;

void printA(void)
{
        printf("a is %d\n", a);
}

编译它以生成目标文件:

$ gcc -c test.c
$ 

没关系!但根据我的理解,变量a应该重新定义,是不是?

1 个答案:

答案 0 :(得分:-1)

一个变量是本地的块,它被定义。块中的代码执行变量超出范围。在你的情况下,首先是全局定义。在第二种情况下,它是在函数内定义的。因此,编译器都是两种情况都不一样。

相关问题