假设我在main.c中有一些全局变量GLOBAL,但我的main.c有一个#include"other.h".但是other.h也有全局变量GLOBAL.
当我在main中编写GLOBAL时,如何让编译器知道我的意思.我可以使用"this"关键字吗?
AnT*_*AnT 10
在C程序中,不能有两个具有相同名称的全局变量.C可能允许通过暂定定义规则在同一文件范围中进行多个定义,但无论如何所有定义都将引用相同的变量.所以,显然你的问题是基于不正确的前提.这里没有"哪一个"的问题.你只有一个变量.
例如,您可以在C转换单元中拥有一系列文件范围定义
int i;
int i;
int i;
Run Code Online (Sandbox Code Playgroud)
这在C中是合法的(与C++相反),并且所有这些定义实际上定义了相同的变量,而不是三个不同的变量.
当然,如果其中一个变量被定义为局部变量(如果是这样,你必须在你的问题中说明)(顺便说一句,为什么它会被调用GLOBAL呢?),那么它将隐藏在中定义的变量的名称.文件范围(或任何更高的范围).在这种情况下,无法访问C中的隐藏名称.重命名局部变量以避免隐藏全局变量.
你的意思是"other.h也有变量"也不清楚.在这种情况下,"有"意味着什么?变量是在other.h中定义的吗?或刚刚宣布?如果它刚刚被声明,那么它并没有真正"拥有"它.如果在那里定义 ......好吧,那么真正的问题是:为什么要在.h文件中定义变量?