![](https://iknow-base.cdn.bcebos.com/lxb/notice.png)
关于c语言头文件编译和运行的问题
图1是c语言写的main函数程序包含了自己的头文件hello.h图2是另外编写的.c的文件包含一个变量和一个函数图3是头文件的内容声明了一个函数我想了很久的问题就是:1....
图1 是c语言写的main函数程序 包含了 自己的头文件 hello.h
图2 是另外编写的.c的文件 包含一个变量和一个函数
图3 是头文件的内容 声明了一个函数
我想了很久的问题就是 : 1.程序从主函数开始运行 执行f() 函数 ,这个函数在头文件里已经被声明
并不是很难理解 但是 主函数并没有定义a变量 程序在执行的时候为什么就能把 tops.c 定义的变量进行
使用 而且 我在主函数的文件里 并没有包含类似 #include "tops.c" 这样的头文件 它运行的时候怎么好
像把 tops.c 里的代码全部个复制到了 main()所在的.c的文件里 在网上查找了资料 都说的太模糊了
求详细的解答~~~谢谢 展开
图2 是另外编写的.c的文件 包含一个变量和一个函数
图3 是头文件的内容 声明了一个函数
我想了很久的问题就是 : 1.程序从主函数开始运行 执行f() 函数 ,这个函数在头文件里已经被声明
并不是很难理解 但是 主函数并没有定义a变量 程序在执行的时候为什么就能把 tops.c 定义的变量进行
使用 而且 我在主函数的文件里 并没有包含类似 #include "tops.c" 这样的头文件 它运行的时候怎么好
像把 tops.c 里的代码全部个复制到了 main()所在的.c的文件里 在网上查找了资料 都说的太模糊了
求详细的解答~~~谢谢 展开
3个回答
展开全部
个人感觉这个应该和编译环境有关系,虽然你没有写相应的代码,其实你在hello.h头文件里已经把tops.c这个文件包括进去了,不然的话,你是在里边声明不了f())函数的,有的编译环境这样写应该是会报错的,而你这个不报错,说明是包含了进去,既然包含了,当然也就f()函数和变量都能用.纯属个人观点,,
本回答被网友采纳
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
2014-12-02
展开全部
静态变量跟全局变量都存放在静态存储区,在程序编译的时候就进行初始化,所以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这样就更容易理解了。
主函数的文件里 并没有包含类似 #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这样就更容易理解了。
更多追问追答
追问
追答
需要声明,没有声明是不能用的,如果要在主函数里用别的文件的全局变量,则需要加上:
extern int a;
这样才能用。
本回答被提问者采纳
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询