讀古今文學網 > C語言解惑 > 24.1 兩種版本的異同 >

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
請按任意鍵繼續. . .