首页 » C语言解惑 » C语言解惑全文在线阅读

《C语言解惑》24.1 两种版本的异同

关灯直达底部

Release版本的exe文件链接的是标准的MFC DLL(Use MFC in a shared or static dll),如MFC42.DLL。这些DLL在安装Windows时已经配置,所以这些程序能够在没有安装VC的机器上运行。这种方式生成的exe文件较小,运行速度较快,但不含有调试信息,所以不容易查错(Release版本下也能进行某些调试工作,但要对编译项进行相应的设置)。一般是在调试正确之后,选择这种方式,故称为发布方式。不过需要注意,有时在Debug方式下调试正确的程序,在Release方式下却不能正确运行。这是正常现象,因为两者的运行环境稍有差别。出现这种问题时,要耐心分析解决,一定要以Release版本正确为准。

而Debug版本的exe链接了调试版本的MFC DLL文件,如MFC42.DLL。因为编译时加入了调试信息,所以可以很方便地进行单步执行和跟踪等调试。当然,这样产生的执行文件较大,执行速度也较慢。因为缺MFC42.DLL,所以在没有安装VC的机器上也不能运行,除非在链接时选择静态链接库。

一般讲来,在早期的Debug版本中,exe文件只能在装有VC的机器上运行。现在有的机器没装VC也可以运行,但如果不采取措施,将看不到屏幕实现的结果。其原因是程序很快执行完毕,来不及看。解决的最简单办法是在结束时增加一条“getchar();”语句。下面的源程序就是采用这种简单方式。

【例24.1】使用getchar函数的示例源程序。


#include <stdio.h>int sum(int,int,int);int main( ){     printf("Sum=%d/n",sum(1,3,5));     getchar();    //增加一句     return 0;}int sum(int a,int b,int c){ return a+b+c; }  

这个文件的exe为153KB。也可以使用system函数,但要包含定义它的头文件。

【例24.2】使用system函数的示例源程序


#include <stdio.h>#include<stdlib.h>   //定义system函数的头文件int sum(int,int,int);int main( ){     printf("Sum=%d/n",sum(1,3,5));     system("pause");    //增加一句     return 0;}int sum(int a,int b,int c){ return a+b+c; }  

使用Release方式产生的exe文件为32KB。

在一台没有安装VC的机器上的运行结果如下:


Sum=9请按任意键继续. . .