首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 开发语言 > C语言 >

为何在两个文件中分别定义了两个相同的变量,却没有冲突,而有时候却有重复定义的冲突呢

2013-10-07 
为什么在两个文件中分别定义了两个相同的变量,却没有冲突,而有时候却有重复定义的冲突呢?本帖最后由 leige

为什么在两个文件中分别定义了两个相同的变量,却没有冲突,而有时候却有重复定义的冲突呢?
本帖最后由 leigema 于 2013-10-06 17:18:36 编辑 我在1.c和2.c中都定义了 int  a。为什么编译的时候没有出现重定义的错误呢?


int a;
int main()
{
         return 0;
 }

int a = 2;


gcc -std=c99 -Wall 1.c 2.c 完全没问题啊。



而且我分开生成目标文件后在链接也没问题
gcc -std=c99 -Wall -c 1.c
gcc -std=c99 -Wall -c 2.c
gcc -std=c99 -Wall 1.o 2.o
也完全没问题啊

这不是重复定义吗?

我以前遇到的符号重复定义错误是怎么回事? 重复定义
[解决办法]
没有赋初值的被当成变量声明处理了。
[解决办法]
编译的时候不做链接的事情,不知道有两个定义
[解决办法]
因为你用了C语言的一个垃圾特性。多用C++编译器来编译C代码吧。
[解决办法]
编译时各文件单独编译,跟其他文件无关,除非你用include把另一个文件的内容复制了过来
C语言规定变量定义时未赋值则为弱定义,如果和其它定义冲突可以视为声明

热点排行