[英]Including Libraries in Multiple Files C Lang
我正在从事C项目,我希望保持自己的组织能力。 因此,我有多个头文件,具有该头文件功能的文件和一个主文件。
|- Header Files
| |- hash_table.h
| |- linked_list.h
| |- dictionary.h
|- Source Files
| |- main.c
| |- hash_functions.c
| |- list_functions.c
| |- dictionary_functions.c
如果在每个功能文件中都包含#include <stdio.h>
库,会不会有任何问题? 它会以任何方式影响我程序的效率吗?
所有现代标头均使用标头防护。 这意味着标头会检查它是否以前已包含在内,然后跳过它。 同样,编译器很聪明,可以弄清楚您实际使用的标头中定义了哪些功能,而仅将这些功能包括在目标代码中。
不,包含文件是对库的描述。 库本身是一个单独的二进制文件,该文件在程序汇编的最后阶段链接
没问题。 标准头文件就是这样写的。 请参阅: http : //en.wikipedia.org/wiki/Include_guard
不,如果您在多个文件中包含相同的头文件,则不会有任何问题。
写入任何头文件时,都将其写入以避免多次包含。
为了避免多个包含 ,经常使用宏预处理器。 下面给出一种这样的最常用的方式。
#ifndef SOME_SYMBOL
#define SOME_SYMBOL
// actual code goes here.
#endif
例如,请参阅以下网址的 Linux stdio.h文件的代码: https : //github.com/torvalds/linux/blob/master/arch/powerpc/boot/stdio.h
在拥有INCLUSION GAURD之前,多重文件包含将不会对您产生影响。因此,通过此操作,您还可以做一件简单的事情,即拥有单个头文件(假设include.h),它将包含所有包含文件,这样您就可以消除包含顺序问题与编译时间成本有关。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.