生成目标文件的过程如下
1. 预处理(Preprocessing)这一步需分析各种命令,如#define,#include,#if等。
2. 编译(Compilation) 这一阶段根据输入文件产生汇编语言,由于通常是立即调用汇编程序,所以其输出一般并不保存在文件中。
3. 汇编(assembly) 这一阶段将汇编语言用作输入,产生具有.o扩展名的目录文件。
4. 链接(linking)这是最册返后一个阶段,在这一阶段中,各个.o模块被放置在该可执行文件中的相应位置上。该文件引用的函数也放在该文件中。
所以决定最终大小的因素很多 语句的多少和程带迹序的大小没有直接关系 c的每一条语句基本都对应着长度不等的汇编语言段 而且作为高级语言 在编译成机器语言的过程中蠢姿并不是一句一句一一对应的 即便是汇编语言 也不完全是一一对应的
具体内容 请查阅编译原理相关书籍
class A{
public:
static int a//不占空间
}
class B : public A
{
public:
virtual int get_num()//占4个字节大小
{
return a
}
private:
char *p//也是4个租哗
}
class C : public B//继承B的大小
{
public:
int get_num()//不占
{
return 2 * a
}
private:
B b//弊春行8+8
}
int main(int argc, char* argv[])
{
cout<森慎<sizeof(A)<<","<<sizeof(B)<<","<<sizeof(C)<<endl
return 0
}
一般人是不算ROM的大小,至多只是估计。因为一个完整的程序,不同的人,甚至同一个人,程序的思路方闷帆法不一样,程序大小会差比较多。而且你的程序,除了算法,还有其他的很多东东,如显示、按键、通信等等,这些可能比你的算法的程序量还要大得多。所以建议你先用仿真(如PROTEUS仿真),选用足够大的滑孝ROM的单蚂让雹片机,编制完整的程序,就知道花了多少的程序空间。
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)