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

无论何时编译c文件,都会生成一个obj文件.我想知道,obj文件的大小在什么因素上依赖?

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

解决方法

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

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

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

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

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

相关文章

本程序的编译和运行环境如下(如果有运行方面的问题欢迎在评...
水了一学期的院选修,万万没想到期末考试还有比较硬核的编程...
补充一下,先前文章末尾给出的下载链接的完整代码含有部分C&...
思路如标题所说采用模N取余法,难点是这个除法过程如何实现。...
本篇博客有更新!!!更新后效果图如下: 文章末尾的完整代码...
刚开始学习模块化程序设计时,估计大家都被形参和实参搞迷糊...