当前位置:首页 » 编程软件 » 编译器程序大小差别

编译器程序大小差别

发布时间: 2023-01-08 12:44:30

1. 为什么编译生成同样一个简单的控制台程序,微软编译出来的比GCC的小那么多

没这回事。
GCC不能编译Windows程序,而微软发布的编译器也编译不了Linux程序,它们不可能编译出同一个程序,最多是编译出一个程序在这两个平台上的移植版(就是两个不同的程序了)。这时候要看程序自身是调用的Windows功能多还是Linux功能多,编译出来的可执行程序也是可大可小,没有一定的大小关系。
腾讯QQ的Windows版有几十兆,而它的Linux版不到5兆……
控制台是微软VS里的说法,终端是Linux下的说法,这样的比较,摆明了要耍赖啊。

2. 为什么我用DevC++编译的helloworld程序exe文件为16kB,而用visualC++6.0编译,大小却高达240kB

很正常,每种编译器对代码的处理、优化的算法都不相同。有的代码紧凑,有的速度快,等等。另外,有很多编译器有各种开关设置(或者以宏的方式设置),不同的设置生成的代码大小也不一样,比如有的包含了调试所用的信息,自然也会大些。
不过,大小差了这么多,可能有两种情况(因为我是用别的语言的,你这两个编译器我还不是很熟悉,只能猜测):一是前者是不是DOS下的,后者是不是WINDOWS下的(WINDOWS下运行的程序更复杂)?二是如前所说,后者是不是包含了调试信息?查一下编译器的开关设置。

3. 相同的程序经51跟PIC编译器编译后大小差距那么大

两者的构架不同,指令集也不同,同样功能,PIC的指令数量大概是51的1.5倍,如果有大量的单字节乘除计算,51的要小的多。
另外就是,HEX不是真实程度的大小,还有,51总线8位宽,PIC的一般是12位甚至更多位,两者比较意义不大

4. 单片机程序大小是看生成的HEX文件的大小还是看KEIL编译结束后显示的CODE大小

这里有一点需要的是:
无论是HEX的大小,还是编译后CODE的大小,都不是烧入到MCU中代码的“真实”容量。
因为这里涉及到数据存放格式相关问题,具体我就不说了。
一般来说,烧入到MCU硬件中去的程序大小,会比你keil编译后的CODE的大小稍微小一些,但差距不会很大。
所以在一般使用中,可以把编译后CODE的大小来作为实际程序容量的一个参考,,,话再说回来,LZ一般不会去那样极限编程吧,LZ你编译后,CODE的大小是多少呢??

我的邮箱是:
[email protected]
有什么问题的话,可以邮件交流等。

5. 不同编译器为什么对数据分配的存储单元大小不同,分配的大小与程序运行有关吗

额,不同的编译器对同一种类型变量分配的存储单元大小不同。。。不同就不同了。。。没有为什么。。。毕竟当初没有统一的标准。不过都是微小的差别,影响不大。我们不需要知道为什么不同,只要知道它们分配的确实不同就行了。
分配的大小与程序运行有关的。同样是一个int型,在VC下被分配4字节,在TC下被分配2字节。实际程序运行的时候,也是前者吃掉4字节的内存,后者吃掉2字节的内存。

6. G++ 和 C++ 编译器编译出的程序 运行后内存使用不同 这是为什么

内存分配,不同的编译器采用不同的方法,其速度,效率,内存大小都不一样。你搜一下malloc的算法。有一个大致的了解。
关于头文件的问题,不同的编译器,对标准的实现有所不同,可以理解的。

7. 在VB中是不是代码越少,所编译出来的exe文件体积越小

有些控件大小不定,代码可能很少,体积却很大。大小主要看除了代码的控件和其他内容,控件一半以上和程序大小有关系,不妨想一想么,给你举个例子。
把一个30K的控件叫做A控件,假如代码一行就是20个字符,一个字符为1K,下面两个程序的其它内容都是100K:这个程序有10个控件,代码共30行;那个程序有30个控件,代码共3行。(每个控件代码字符数量不同,加起来正好30行、正好3行。)那第一个程序大小是30K控件内容×10个控件+30行代码×20个字符(20K字符内容)+100K其他内容=1000K内容,这个程序有30行代码的大小,总大小1000K,第二个程序大小是30K控件内容×30个控件+5行代码×20个字符(20K字符内容)+100K其他内容=1000K内容,这个程序共有3行代码的大小,总大小1000K。
第一个程序代码多,并不比第二个程序小。

8. 不同的c语言编译系统差别在哪里代码是否 存在兼容性的问题

ANSI
C
一般都可以支持,但也涉及到不同版本的C标准的兼容性问题,比如VC6不支持C99,VS2003,2005,2008,20120等就可以部分支持C99标准;而且很多标准并没有规定实现,不同的
编译器
实现可能不同,比如C标准只规定了short<=int<=long,但并没有规定
字节
数,导致不同的编译器
数据类型
的大小各不相同。

ANSI
C标准的话,不同的编译器一般都有不同的实现,需要分别实现。
在移植到不同编译器的时候这些都要注意处理,比较常规的做法是数据类型和
函数
等自己根据不同编译器封装成一个统一的格式,在
程序
中使用封装后的数据类型或函数,而不要使用原生类型,这样在移植时只需要在封装的地方根据编译器的不同进行修改就可以了,不需要再修改
源代码

9. 我用c++源码编译出来的执行程序和官方编译比大小和运行速度会不一样吗官方可能有自己的一套编译环境吗

你看看自己是 debug编译还是release编译。是32位编译还是64位编译呗。
如果你编译的是debug版本,那么肯定比较大也比较慢。这个关键看你编译传入的操作。

当然编译器的版本也可能有关系,gcc和vc 这种编译器种类不同也有关系,甚至于编译的目标平台也有关系。

10. 编译器版本不一会不会有差别

各种程序设计语言的编译器版本肯定是会有差别的。但是编译器版本一般都是向下兼容的。例如:你在旧版本的 C 编译器中编写的 C 语言源代码,若 C 语言编译器的版本升级到了新版本,它肯定会完全兼容你原来在旧版本中编写的所有 C 语言源代码;但是反之是不行的。
因为在新的编译器版本中,除了增加了一些必须要修改的各种 bug 之外,肯定还会增加一些新的库函数供用户使用,使得用户编程更加方便、得心应手。

热点内容
java返回this 发布:2025-10-20 08:28:16 浏览:593
制作脚本网站 发布:2025-10-20 08:17:34 浏览:888
python中的init方法 发布:2025-10-20 08:17:33 浏览:581
图案密码什么意思 发布:2025-10-20 08:16:56 浏览:765
怎么清理微信视频缓存 发布:2025-10-20 08:12:37 浏览:684
c语言编译器怎么看执行过程 发布:2025-10-20 08:00:32 浏览:1013
邮箱如何填写发信服务器 发布:2025-10-20 07:45:27 浏览:255
shell脚本入门案例 发布:2025-10-20 07:44:45 浏览:114
怎么上传照片浏览上传 发布:2025-10-20 07:44:03 浏览:806
python股票数据获取 发布:2025-10-20 07:39:44 浏览:712