首页 > 试题广场 >

全局变量可不可以声明在可被多个.C文件包含的头文件中()

[单选题]
全局变量可不可以声明在可被多个.C文件包含的头文件中()
  • 可以
  • 不可以
推荐
A
全局变量如果不加static放在.h文件中,会在链接的时候出错,但是加上static,它就相当于各自c文件的本地全局变量,作用域小了一截,这样的定义肯定是与本身的出发点相违背的!这样的操作有意义吗?
编辑于 2015-12-10 13:36:10 回复(15)
B,不可以,当使用那些头文件时,包含它,当编译时就会包含头文件,会重复定义这个全局变量,导致重复定义。
发表于 2015-10-20 14:03:26 回复(2)
不使用关键字,在链接时会引发“符号被多重定义”错误;
使用static关键字,定义变为内部链接,此时所谓的全局变量相当于每个c文件的局部变量,没有全局变量的效果;
具体可以参考代码:http://blog.csdn.net/basstal/article/details/52275191
发表于 2016-08-22 11:22:27 回复(0)
extern修饰可以在多个地方定义
发表于 2017-07-11 09:05:07 回复(1)
这特么是啥 脑筋急转弯?全局变量 和 静态全局变量一样?
发表于 2016-09-29 16:32:15 回复(1)
如果说不用exturn声明全局变量,而是在.h中使用static标记变量,虽然在整个项目编译运行过程中不会出错,但是实际上的结果是该变量重复定义。
发表于 2020-05-24 10:18:32 回复(0)
题目说的定义,并不是声明。要说定义的话也可以,加上#ifndef
发表于 2015-09-29 10:34:42 回复(1)

答:可以,在不同的C文件中以static形式来声明同名全局变量。

可以在不同的C文件中声明同名的全局变量,前提是其中只能有一个C文件中对此变量赋初值,此时连接不会出错

编辑于 2015-12-10 13:35:46 回复(2)
加static变成静态全局变量,而且还是定义而不是声明在头文件中,实际工作这样用还不给骂死,纯属不讲武得
发表于 2021-03-02 23:23:43 回复(0)
理论可以,大部分编译器不可以,提示重定义
发表于 2021-02-22 20:25:10 回复(0)
小白觉得应该可以,利用标准头文件格式,即使多个.C文件中包括了这个头文件,其也只会声明一次,防止重复声明,也使用于函数、结构等声明

发表于 2020-04-19 16:47:18 回复(0)
c++ primer第41页
发表于 2020-04-17 10:51:00 回复(0)
你要硬抠字眼说可以不可以,那只能说可以,但你要问能不能这么干,也能这么***要问这么干正不正确稳不稳妥那肯定是不稳妥
发表于 2020-03-24 11:23:56 回复(0)
觉得应该就是不可以啊,又没有说是静态全局变量
发表于 2018-12-29 14:04:24 回复(0)
此题的变量只是声明被多个.c文件包含的头文件中,而并不是一个。c文件包含了多个声明了某一变量的文件,而每个.c的文件还是只会包含一次该变量的定义,不会出现重复定义的情况
此时你只要类比库函数就好了,无论你再那一个。c文件中使用库函数,你都要包含相应的头文件
发表于 2018-05-10 10:04:37 回复(0)
B 不可以,全局变量在多个文件使用时,只能在一个文件int a声明一次,在其他文件中用extern进行外部变量说明,extern int a;
发表于 2018-04-16 19:34:18 回复(0)
用extern可以多处声明吧
发表于 2017-09-11 12:08:52 回复(1)
这样明显会造成存在多个符号定义,链接的时候会报错
发表于 2017-06-27 07:16:38 回复(0)
在不同的C文件中以static形式来声明同名全局变量。 可以在不同的C文件中声明同名的全局变量,前提是其中只能有一个C文件中对此变量赋初值,此时连接不会出错。
发表于 2017-05-08 10:19:17 回复(0)
静态变量可以
发表于 2016-09-22 12:57:36 回复(0)
一般都是在一个文件内定义,然后在其他文件内声明,哪有多次定义的?重复定义不出问题?
发表于 2016-08-10 10:47:23 回复(0)