包含头文件会使程序中的程序更重

时间:2014-11-04 09:29:07

标签: c

包括头文件,如stdio.h,conio.h或任何其他文件,使我们的代码或程序更重

4 个答案:

答案 0 :(得分:3)

包含头文件会在预处理时将所有内容插入翻译单元。

如果include只有声明(通常是这种情况)并且函数在库文件中实现,则代码不会变得更重。如果头文件包含实现,它将在编译时编译,从而使文件更重。

您可以在此处阅读有关编译步骤的更多信息: http://www.tenouk.com/ModuleW.html

答案 1 :(得分:3)

为什么不尝试包含它们并构建EXE,然后不包括它们并构建EXE,并查看文件大小会发生什么。我怀疑你会发现链接器足够聪明,只能在EXE中构建必要的内容。

答案 2 :(得分:1)

对于典型的发布版本,。头文件通常只包含声明,未使用的声明不会影响发布版本的大小。头文件可以包含内联函数定义,如果未优化定义,编译器可能会发出内联函数定义。但是,这可能不适用于<stdio.h>等系统标头。

对于典型的调试版本,。调试数据通常包含有关声明的信息,即使这些声明未在程序中使用。这样您就可以在调试器中使用这些声明。现代调试器包括功能定义,枚举,甚至是现在的预处理器定义。

也就是说,您可以将任何放在头文件中。

不必要的头文件包含的主要影响是使构建过程花费更长时间。

答案 3 :(得分:0)

通常头文件只包含声明性语句。声明本身不会增加代码大小。在代码中的任何位置引用声明的符号将使链接器包含代码定义声明的符号。

因为头文件必须由编译器在包含它的代码的上下文中解析,所以可以通过包含头文件来扩展构建时间。例如,像windows.h这样的非常大或深度嵌套的标题可以通过这种方式产生相当大的效果。

此外,如果您使用具有代码导航和理解功能的IDE(例如自动完成和语法检查),IDE必须以与编译器类似的方式解析代码,此处头文件可以减慢该过程的速度。

虽然你应该避免包含不必要的头文件,但那些包含声明代码融合的代码是不可避免的 - 或者至少避免它们会导致错误,重复并使代码难以维护。