永发信息网

关于c语言头文件编译和运行的问题

答案:3  悬赏:50  手机版
解决时间 2021-11-23 16:31
关于c语言头文件编译和运行的问题
最佳答案
静态变量跟全局变量都存放在静态存储区,在程序编译的时候就进行初始化,所以f()可以直接调用a。
主函数的文件里 并没有包含类似 #include "tops.c",但是包含了#include "hello.h",这样就包含了void f()的声明,可以直接调用f()函数。
tops.c里的f()函数并没有staic限制,所以可以在hello.h中对它进行声明。这样别的.c文件要调用tops.c里的函数,只需要包含它的声明文件hello.h就可以了。

tops.c最好是跟hello.h名字统一下,比如把hello.h改为tops.h这样就更容易理解了。追问
你的回答很满意 , 但是还有一点就是  在主函数 加了一句printf()语句  输出a的值  为什么编译报错 显示undeclared ‘a’  未申明  你前面回答  a为全局变量那应该在主函数可以使用的啊?   难道是之前在tops.c文件里定义的a变量只能tops.c文件所在的函数里进行使用  a的作用域只是在 tops.c的文件里吗?
追答需要声明,没有声明是不能用的,如果要在主函数里用别的文件的全局变量,则需要加上:
extern int a;
这样才能用。追问谢谢~~~~
全部回答

1、只要在程序开头加入#include<头文件名>,在编译过程当中,头文件自动会被添加到源文件当中一起进行编译。
2、编译,编译程序读取源程序(字符流),对之进行词法和语法的分析,将高级语言指令转换为功能等效的汇编代码,再由汇编程序转换为机器语言,并且按照操作系统对可执行文件格式的要求链接生成可执行程序。
C源程序头文件-->预编译处理(cpp)-->编译程序本身-->优化程序-->汇编程序-->链接程序-->可执行文件。

个人感觉这个应该和编译环境有关系,虽然你没有写相应的代码,其实你在hello.h头文件里已经把tops.c这个文件包括进去了,不然的话,你是在里边声明不了f())函数的,有的编译环境这样写应该是会报错的,而你这个不报错,说明是包含了进去,既然包含了,当然也就f()函数和变量都能用.纯属个人观点,,
我要举报
如以上问答信息为低俗、色情、不良、暴力、侵权、涉及违法等信息,可以点下面链接进行举报!
大家都在看
有个男生,他00年16岁,我19。他长得挺帅的,
良人未知什么意思?什么意思?
吉林省国土资源执法监察支队靖宇大队地址有知
给乞丐买馒头笑话
过门石下面压什么
为什么从冰箱里冷冻窗刚拿出东西时,都会有点
良品生活的销售业绩
上海迪土尼出入口离p1停车场多远?
中国移动在网上怎么查自己手机服务密码
Mylove天堂树的故事
马云卸任了之后阿里巴巴还是他的吗
民办学校靠什么把握家长抓住生源论文
算命 生辰八字 查询属鸡19930829上午9点问婚
兰州金德盛地理信息科技有限公司怎么样?
为什么从小养到大的狗狗,也会对主人呲牙,目
推荐资讯
紫雲轩茶楼地址在什么地方,我要处理点事!
ios12真的提升了性能吗
驾驶证被扣了酒驾还想开车怎么办
苹果蜂窝数据关闭app偷流量怎么关闭?
高低压配电一定要分隔2个房间吗
动漫怎么赚钱啊??
有悠悠鹿鸣这个诗句的电视剧是什么?
织布挡车工线头断了怎么结
沙棘树怎么种
cdr怎样做文字背景
大众朗逸和别克英朗应该怎么选,家用代步哪款
若乃缘情体物,则大希声,莫不超挺睿兴,妙拔神
正方形一边上任一点到这个正方形两条对角线的
阴历怎么看 ?