繁体   English   中英

在多个文件中包含库C语言

[英]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.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM