2013-06-01 59 views
0

我有一个C文件中的int a[]。现在在另一个.c文件中我有extern int *a使用extern与不同的类型,但同名变量C

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

+0

对不起,这是一个typo.actually都具有相同的名称“A” –

回答

2

未定义的行为。所以什么都可能发生。

+0

能否请您详细一点,为什么未定义行为? –

+0

@vaibhavshukla:因为标准是这样说的。 (参见C99的6.2.7节)在更实际的层面上,请参阅这里的一些答案:http://stackoverflow.com/questions/6385850/pointer-array-extern-question。 –

+0

如果我在第二个文件中包含第一个文件会怎么样?会有什么结果?链接错误或编译器错误? –

0

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

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

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

这里没有包含任何文件... –

+0

@dinesh:我dnt认为所以bcoz extern关键字说它的一个声明没有定义或者说当我们说extern时,它意味着某处其他文件变量已经被定义,那么怎么来重新定义错误? –