这取决于头文件中是否有定义或只是声明.
它还完全取决于实现,因为ISO C标准对于如何在该级别完成工作没有任何意义.它仅涵盖事物在"C虚拟机"级别的行为.但我会在这里介绍最可能出现的情况.
诸如int xyzzy;(或者更糟char big_honkin_thing[9999999];)的定义可能占用目标文件中的空间,除非您有一个特别聪明的链接器,否则也可以使用可执行文件.我说"可能",因为这取决于实施.
初始化值更有可能确保它存储在对象中而不是在运行时创建.但是你可能会发现这样的效果,无论是更大的对象/可执行文件(如果它是在编译时创建的)还是(温和地)更慢的启动时间,因为更多的内存必须进行零初始化.
例如,添加char big[99999] = {'x'};到头文件会导致可执行文件的大小从18K到118K.
简单的声明类似的东西typedef,extern并不会在对象中分配空间.
此外,即使没有定义,编译时也会增加,因为编译器必须处理该头文件.但这不会对运行时(速度或存储)本身产生任何影响.
| 归档时间: |
|
| 查看次数: |
680 次 |
| 最近记录: |