原来就不知道“条件编译”,现在正在学习C#,谁给讲讲啊? (100分)

  • 主题发起人 wjiachun
  • 开始时间
W

wjiachun

Unregistered / Unconfirmed
GUEST, unregistred user!
“条件编译”有什么用?如何用?比如下面这段代码:
http://www.01cn.net/cgi-bin/topic_show.cgi?id=164&h=1&bpg=1&age=30
1: // #define DEBUG
2: #define RELEASE
3: #define DEMOVERSION
4:
5: #if DEBUG
6: #undef DEMOVERSION
7: #endif
8:
9: using System;
10:
11: class Demo
12: {
13: public static void Main()
14: {
15: #if DEBUG
16: Console.WriteLine("Debug version");
17: #elif RELEASE &&
!DEMOVERSION
18: Console.WriteLine("Full release version");
19: #else
20: Console.WriteLine("Demo version");
21: #endif
22: }
23: }
 
樓主第一行程序是否是多了 個//,否則此行成了注解,會出錯。
條件編繹,是編繹器自動依據條件選擇程序段編繹執行。
如上,要調用DEMO類及程序段前,先設定DEBUG、 RELEASE 、DEMOVERSION
三個參數任意一個為真(>=1),如DEBUG為真,DEMO類就成為一個輸出Debug version的類。
其它類同,
以上程序已很好的說明了條件編繹,不妨編成功,調用看看效果就徹底明白了。
 
“条件编译”这四个字就已经很好的说明问题了
根据你定义的条件来编译你的代码呗~
在Delphi中是这样:
{$DEFINE VERSION2} //{$DEFINE VERSION1}
begin
{$IFDEF VERSION1}
ShowMessage('Version 001');
{$ENDIF}
{$IFDEF VERSION2}
ShowMessage('Version 002');
{$ENDIF}
end;
上面将执行:ShowMessage('Version 002');
如果把 {$DEFINE VERSION2} 换成 {$DEFINE VERSION1}
则执行 ShowMessage('Version 001');
当然,如果两个都定义了,那就两句代码都会编译到你的EXE中去。
 
用条件编译很好用的,我的软件有试用版和正式版,就是用条件编译来处理的
unit casecompi
begin
{$define release}
end

unit main
uses
begin
{$i 'casecompi.pas'} //插入代码casecompi.pas的代码
{$ifdef release}
//正式版的代码
{$else
}
//试用版的代码
{$endif}
end;
 
如果是试用版,可这样处理:
unit casecompi
begin
//{$define release}
end.
好用吧!
 
如果多处要使用条件编译,可在之前插入如下代码:
{$i 'casecompi.pas'} //插入代码casecompi.pas的代码
做到一处定义,多处使用。
 
条件编译也可嵌套使用,和
if ... then
if then
...
else
...
end.

else
...
end
使用方法一样。
 
顶部