• 已解决 33699 个问题
  • 已帮助 5814 位优秀工程师

C语言中.h文件和.c文件是什么关系?

b565192b89876639 2019-04-13 浏览量:1296
我们平时写程序的时候,都是在每个文件里面包含.h文件然后在工程里面添加.c文件,为什么程序执行的时候就会到对应的.c文件中去执行相应的代码?还有就是像stdio.h这些头文件,我工程里面并没有stdio.c文件,我也不知道stdio.c的代码是怎么实现的,但是为什么程序就可以实现某些功能了呢?
0 0 收起

我来回答

上传资料:
选择文件 文件大小不超过15M(格式支持:doc、ppt、xls、pdf、zip、rar、txt)
最佳答案
  • 可以理解为.h文件时函数的声明文件,在定义某一个函数的时候,把函数的声明写到如abc.h文件中,函数的实现代码写到abc.c文件中,这样其中的某个函数如果需要在其他文件中被调用,只需要在其他的.c文件如ddd.c中包含这个abc.h文件就可以了。这样在编译器编译ddd.c过程工就知道有这么一个函数在其他的地方被定义了,编译不出出错。编译完所有源程序后,会进行连接,连接器会自动找到编译好的abc.o(由abc.c编译获得),并把其中的响应函数代码连接到调用该函数的地方。在调用stdio.h这样的头文件中的函数的时候,编译器会自动连接自己带的库中连接相应的函数,这些函数是编译器自己带的,已经编译成库放到默认路径中了,编译器编译的时候回自动到默认目录中去寻找并编译。当使用第三方的库的时候,除了在.c中包含第三方库的.h文件,还需要告诉编译器库的路径,这时编译器才能找到相应的库进行连接。
    • 发布于 2019-04-15
    • 举报
    • 评论 0
    • 0
    • 0

其他答案 数量:5
  • 编译器将源文件中的.c和.h文件编译生成中间文件,一般后缀为.obj的文件,即目标代码文件。然后通过链接工具将目标代码及相应的库文件链接生成最终可在处理器上运行的二进制文件。对于一些源文件中只有.h,而没有对应的.c文件,是因为具体的函数实现是通过库文件的形式提供的。比如,我们只写一个简单的print("Hello world"),编译链接后的文件却并不是很小,这就是因为链接时加入了库函数的原因。
    • 发布于2019-04-15
    • 举报
    • 评论 0
    • 0
    • 0

  • h文件时函数的声明,c文件时函数的实现,连接时会自动找到c文件中的函数代码;

    stdio.h这种属于C语言的标准库,其函数代码已经生成二进制文件,并以lib库的形式包含在编译器的某个文件夹中,连接时编译器自动找到并使用该库。

    • 发布于2019-04-15
    • 举报
    • 评论 1
    • 0
    • 0
Angel_YY 回复了 Angel_YY :stdio.c已经被编译成库了,看不到.c,只能使用静态库.a 回复

  • stdio是系统的库,是已经编译到了系统中,软件是支持从系统的库中调用的。

    C与H文件的功能不一样,C中主要是逻辑实现,H中是对C的声明与外部C文件的桥梁

    • 发布于2019-04-15
    • 举报
    • 评论 0
    • 0
    • 0

  • 因为你前面有stdio.h文件,这个文件在stdio.c代码最前面进行了引用,stdio.c文件的实现是调用了stdio.h关联起来的c函数实现的

    • 发布于2019-04-17
    • 举报
    • 评论 0
    • 0
    • 0

  • 其实一个.H就是对一个.c 文件的声明,  .C文件包含源代码。目的是在不同.C 中引用
    • 发布于2019-04-21
    • 举报
    • 评论 0
    • 0
    • 0

C语言中.h文件和.c文件是什么关系?