加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 百科 > 正文

关于C编程中的.c文件和.h文件?

发布时间:2020-12-16 10:41:35 所属栏目:百科 来源:网络整理
导读:在foo.c中有一个函数f,我将f Prototypes放入头文件中. 然后,有3个问题: 头文件必须命名为foo.h吗? foo.c和foo.h必须在同一个目录中吗? 如果两个问题的答案都是否定的,也就是说,头文件可以命名为f.h,foo.c和f.h可以在不同的目录中.看一个例子: ?/的CFile
在foo.c中有一个函数f,我将f Prototypes放入头文件中.

然后,有3个问题:

>头文件必须命名为foo.h吗?
> foo.c和foo.h必须在同一个目录中吗?
>如果两个问题的答案都是否定的,也就是说,头文件可以命名为f.h,foo.c和f.h可以在不同的目录中.看一个例子:

?/的CFile / foo.c的

#include "~/hfile/f.h"
int f(void){
     ...
}

?/ HFILE / f.h

int f(void);

?/主/ cmain.c

#include "~/hfile/f.h"
int main(void){
    f(); 
    ...  
}

然后,当我在cmain.c中调用f函数时,cmain.c可以通过#include指令找到f.h,但cmain.c如何通过f.h找到foo.c,因为cmain.c只包含f.h而不包括foo.c?或编译器或链接器如何通过f.h找到foo.c?

解决方法

1.头文件必须命名为foo.h吗?

这不是必要的,但它可以很方便,而且大部分时间都是不成文的规则.

2. foo.c和foo.h必须在同一个目录中吗?

这不是必需的.您可以给c编译器包含目录.或者您可以包括相对于目录,例如

#include "inc/foo.h"

3.如果两个问题的答案都是否定的,foo.c和f.h可以在不同的目录中.然后,当我调用f函数时,它可以通过#include指令找到f.h文件,但编译器或链接器如何找到foo.c并从foo.c调用f?

请参阅答案2.例如,请参阅带有-I选项的gcc手册(https://gcc.gnu.org/onlinedocs/gcc/Directory-Options.html)

更新:
由于问题已经延长,也许您还可以查看较旧的帖子C/C++ header and implementation files: How do they work?.

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读