C语言头文件的问题。

都知道一般情况下,头文件中只声明不定义,可是看了一道题,说,被多个C文件包含的头文件可不可以定义变量,为什么?答案是什么,用static来弄,也没有看明白。我试了一下,在... 都知道一般情况下, 头文件中只声明不定义, 可是看了一道题, 说, 被多个C文件包含的头文件可不可以定义变量, 为什么?答案是什么, 用static来弄, 也没有看明白。
我试了一下, 在.h中定义一个int i = 9;分别在两个点.c 文件中引用不会有错误啊。请解释下。
展开
 我来答
lyhdez1
2012-03-21 · TA获得超过1942个赞
知道小有建树答主
回答量:687
采纳率:100%
帮助的人:843万
展开全部
是这样的,如果你的头文件只是被多个c文件包含,且这些c文件都是独立的(也就是不在同一个工程里),那么在头文件里定义变量(当做全局变量用)是可以的。
但是在同一个工程里,如果多个c文件都包含了同一个头文件的话,那么你就不能在这个头文件里定义变量了。否则经过包含之后相当于在多个c文件里都定义了名字相同的全局变量。这在同一个工程里是不允许的,因为c不允许变量重名。
更多追问追答
追问
我上级试了一下, 就我上面给一楼那个题目的意思是这样子的;
我有两个a.c , b.c文件, 还有一个head.h文件, 在head.h中定义一个变量i;我在a.c , b.c中都包含此头文件, 并且在a.c中调用b.c中的函数, 那么就会出错。
可是当我用static 将head.h中的变量i, 定义为static int i; 时候, 就不会出现链接错误。 是不是也就是说, static 定义的变量只被初始化一次; 我是这样子理解的。
追答
static放在文件中,表示只能在本文件中使用。。。
zhyntc
2012-03-21 · TA获得超过475个赞
知道小有建树答主
回答量:369
采纳率:100%
帮助的人:351万
展开全部
会出问题。比如说 a.h b.h test.c
b.h里面#include<a.h>
然后test.c 里面 #include<a.h>
#include<b.h>
就会重定义了
追问
3、全局变量可不可以定义在可被多个.C  文件包含的头文件中?为什么? 
答:可以,在不同的C 文件中以static 形式来声明同名全局变量。
可以在不同的C 文件中声明同名的全局变量,前提是其中只能有一个C 文件中对此变量赋初值,此时连接 不会出错。你帮我解释一下上面这道题目是什么意思啊, 我就没有看明白。
追答
全局变量常驻内存,不随程序而销毁,所以可以
如果多个文件都引用的话需要用extern关键字
本回答被提问者和网友采纳
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
给不起的浪漫50
2012-03-22
知道答主
回答量:6
采纳率:0%
帮助的人:9700
展开全部
你可以问的更详细一些,具体问题,具体分析
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
收起 更多回答(1)
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式