我知道什么是头文件,但是,我仍然不明白为什么很多程序员制作一个头文件,一个同名的源文件,头文件中只有原型函数,同时告诉我们该函数做了什么在源文件中.
我从不在单独的文件中创建函数和原型,只是将它们全部放入头文件中.
问题是,为什么要为头文件创建源文件?它是否有任何优势?是否只是为了使代码看起来更干净?我不明白.
Jer*_*fin 10
如果在标题中实现函数,然后将标题包含到两个或多个不同的源文件中,则您将拥有相同函数的多个定义.这违反了一个定义规则.
可以通过声明函数内联来解决这个问题,但是(除非链接器知道如何合并多个定义)可能会导致代码膨胀.
您通常在标头中定义(不仅仅是声明)内联函数.
并且声明非内联函数(例如,其主体足够大的函数),并在一个特定的编译单元中定义它们(即实现它们).
然后链接器在链接时解析相应的函数名称(通常是损坏的名称).并且您不希望具有多重定义的函数.
只有一个编译单元提供的函数定义使总构建时间更快一些.
通过链接时优化(例如编译期间和链接期间的-flto选项g++),事情变得更加复杂.
请注意,巨大的软件(一些可执行文件几乎是1千兆字节的二进制文件,只需将它们链接几分钟)就会带来一些单独的程序员甚至无法想象的限制.只是尝试从源代码编译一个大型免费软件(Libreoffice,Firefox,Qt5,...)来猜测问题.
顺便说一下,你原则上可以将某些程序的所有代码放在一个源文件中,但出于有效和明显的原因,人们不这样做.
| 归档时间: |
|
| 查看次数: |
424 次 |
| 最近记录: |