我正在研究一个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>
等库,会不会有任何问题?它会以任何方式影响我的计划的效率吗?
答案 0 :(得分:1)
所有现代标题都使用标题保护。这意味着标题检查它是否已被包含在之前,然后跳过它。此外,编译器足够聪明,可以确定实际使用的标头中定义的函数,并且只包含目标代码中的函数。
答案 1 :(得分:1)
不,包含文件是库的描述。库本身是一个单独的二进制文件,在程序汇编的最后阶段链接
答案 2 :(得分:1)
没问题。 标准头文件以这种方式编写。 请参阅:http://en.wikipedia.org/wiki/Include_guard
答案 3 :(得分:1)
不,如果在多个文件中包含相同的头文件,则不会有任何问题。
当写入任何头文件时,编写它以避免多次包含。
为避免多次包含,经常使用宏预处理器。下面给出了一种最常用的方法。
#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
答案 4 :(得分:1)
Mutliple文件包含不会影响你,直到你有一个包含GAURD.So由你也可以做一件简单的事情,那就是有单头文件(假设includes.h),它将包含所有包含文件所以你可以通过编译时间来消除包含顺序问题。