44问答网
所有问题
C语言可以在不同的源文件中定义相同名字的全局变量吗
不加static,这样编译会通过吗
举报该问题
推荐答案 推荐于2017-11-25
不使用static的时候,两个不同的
源文件
都可以正常编译,但会出现链接错误,原因是有两个地方存在相同的变量,导致
编译器
无法识别应该使用哪一个。
另外,而使用static的时候,你所定义的static变量如果是局部的话,编译的时候编译器会将其重新命名,其他文件就不会使用到这个文件的static变量了,这样就使得只在本文件内有效;如果是全局的话,就全局可见,共享同一块内存空间。
具体细节请参考《C++反汇编与逆向分析》(钱林松),里面讲的很详细。
如有疑问可以追加问题,欢迎采纳,谢谢!
温馨提示:答案为网友推荐,仅供参考
当前网址:
http://44.wendadaohang.com/zd/3RGWVZZRG.html
其他回答
第1个回答 2018-11-07
拿vc试啊,刚花了几分钟实测了下,不加static,不管是否初始化,都是在链接的时候报重定义错误,如果加了static, 不管是否初始化,编译链接都没问题,只是不同的源文件占用不同的内存,也就是说已经是两个不同的static全局变量了。
第2个回答 2013-07-26
可以,因这个不是语法错误,一般是逻辑错误!而这种错误是看编程人员要怎么使用变量的!
第3个回答 2013-07-23
编译会通过
链接会失败
第4个回答 2013-08-03
可以啊!直接添加变量即可。
1
2
下一页
相似回答
c语言中在
两个
文件中
命名了
相同的变量名
,在内存中会不会读取错误
答:
如果在不同的c文件中定义了同名的全局变量,则它们会占用相同的内存空间
,而且编译链接时不会报错!这可以参考全局变量的内存初始化顺序,对于局部变量而言,内存分配的顺序和代码的顺序是一样的。全局变量就不一样了;一般的编译器,(1) 对于初始化的全局变量,碰到之后就知道这是一个定义,会马上分配...
C语言全局变量可以
重复
定义吗
答:
(1)C语言全局变量不可以重复定义
,但需要注意的是在C语言函数中,可以定义与全局变量同名的局部变量,此时的全局变量会暂时无效。(2)全局变量是相对于局部变量而言的。全局变量也称为外部变量,它是在函数外部定义的变量。 它不属于哪一个函数,它属于一个源程序文件。其作用域是从定义该变量的位置...
关于
C语言
重复
定义的
问题-uboot
答:
多个c文件可以使用#define定义相同名称的宏
,但是,多个C文件定义相同名称的全局变量的话,就会出问题了,全局变量在整个工程中起作用;也就是说:a.c中定义了全局变量 int memory;b.c中就不能定义全局变量 int memory;同样,你下面的做法是不行的 --- //ss.h ifndef comand define comand 1 int...
在
C语言中
,一个
文件中定义的 全局变量
,在另一个文件中
能
用吗?
答:
全局变量extern可以在其他源程序中使用;全局变量static只能在本程序中使用
。全局变量是使用相同的内存块在整个类中存储一个值。全局变量既可以是某对象函数创建,也可以是在本程序任何地方创建。全局变量是可以被本程序所有对象或函数引用。
大家正在搜
C语言同一个工程不同源文件
C语言源文件到汇编语言的编译
C语言中以源文件进行编译
C语言程序可以由多个源文件构成
c语言头文件和源文件
二级C语言直接打开的源文件
c语言中数组的定义
c语言定义变量
c语言多个源文件
相关问题
c语言问题 局部变量能不能和全局变量重名?
c语言全局变量问题。 现有2个文件,被放在同一个工程中。如果...
c语言多个源文件定义同名全局变量居然没连接出错(只初始化了一...
在C语言中,一个文件中定义的 全局变量,在另一个文件中能用吗
C语言全局变量可以重复定义吗
C语言中全局变量和局部变量是一样的名字有问题吗?
C语言如何在两个文件中访问同一个全局变量
C语言中两个源文件,两个同名的未初始化全局变量,这时哪个算该...