C对象文件的大小取决于什么?

前端之家收集整理的这篇文章主要介绍了C对象文件的大小取决于什么?前端之家小编觉得挺不错的,现在分享给大家,也给大家做个参考。
无论何时编译c文件,都会生成一个obj文件.我想知道,obj文件的大小在什么因素上依赖?

只是为了让我的问题更清楚,
例如,c文件包含一个类声明,该类有1个整数变量作为数据成员,并且还有一些成员函数.如果我编译这个文件,那么一些对象文件将被创建一些X大小.现在假设我添加更多的数据成员和成员函数,那么obj文件的大小会改变吗?

解决方法

这取决于一百万个不同的因素,完全依赖平台和编译器和设置.

对象文件必须包含用于具有外部链接函数函数体的所有组件,以及具有外部链接的所有全局变量.任何具有内部链接内容都可能或可能不保证对象文件中的单独条目,因为这些可能已被优化并直接集成到其呼叫站点中.这很大程度上取决于优化设置.

GCC还有一个“链接时间优化”的选项,它基本上将整个源代码的副本添加到对象文件中,并大大增加其大小.

调试符号还增加了大量额外的数据.

对于您的C特定问题:类定义本身在程序集中不是真正可见的.非内联成员函数只是更多的函数必须编译,而数据成员只是被处理与原始数据成员相同 – 如果您声明该类型的实例,它们将在调用栈上,但不直接影响汇编代码…除非您使用常量初始化事物;当然,常量会进入代码.

猜你在找的C&C++相关文章