在头文件中写函数规范吗?加载头文件的实质是什么?如何避免重复引用?

2025-03-02 14:41:26
推荐回答(2个)
回答1:

我反过来回答吧。

  1. #include就是把头文件的内容搬过来。编译器是只编译C文件的,它不会单独编译头文件,头文件只是被包含的。如果一个头文件没有被任何C文件包含,则该头文件中的内容不会被编译到。

  2. 如果程序规模不大,函数写在头文件里也行,但有些项目非常大,几百万行代码,上万个文件,如果一个头文件同时被好几千个C文件包含,这时如果该头文件里有很多函数的实现,那么这些函数将被重复编译好几千遍。有些大型开源项目(例如OpenOffice),完全编译一次要花十几个小时,时间就是这么浪费的。

回答2:

1、一般会是在.c里面写函数的实现。如果该函数除了在对应.c中使用还在其他.c中使用,则将函数声明放在对应.h中,其他.c文件只要包含该.h文件即可。同时该不能定义成static。
2、可以在头文件里使用
#ifndef _A_H_
#define _A_H_
......
#endif//.h文件结尾处