一个简单的条件编译的问题(100分)

  • 主题发起人 主题发起人 smithcouple
  • 开始时间 开始时间
S

smithcouple

Unregistered / Unconfirmed
GUEST, unregistred user!
今天看到一个Basic的代码:
#If 0 Then
....

#End If

请问,这个转成Object Pascal应该怎么写呢?
我尝试这样:
{$DEFINE zero}
{$IFDEF zero}
....
{$ENDIF}

这样对不对?谢谢
 
是对的。
 
就是这样啊

中间还可以插入:
{$ELSE}
 
可是结果很有意思
VB中:
#If 0 Then
MsgBox "zero"
#Else
MsgBox "not zero"
#End If
消息框显示的是:"not zero"

Delphi中:
{$DEFINE zero}
{$IFDEF zero}
showmessage('zero');
{$ELSE}
showmessage('not zero');
{$ENDIF}

消息框中显示的:"zero"

所以我只好把代码改成了:
{$DEFINE zero}
{$IFDEF not zero}
showmessage('zero');
{$ELSE}
showmessage('not zero');
{$ENDIF}



请问这是什么原因?另外{$DEFINE zero} 这里的zero是多少?
 
Delphi中:
{$DEFINE zero} //定义编译...可以认为是条件吧,如果是zero,就编译
{$IFDEF zero}
showmessage('zero');//所以这里会被编译运行
{$ELSE}
showmessage('not zero');
{$ENDIF}
 
那在Delphi下是不是应该这么写?
{$IF BOOL(0)}
ShowMessage('zero');
{$ELSE}
ShowMessage('not zero');
{$IFEND}
 
应该这样理解: {$DEFINE xxx} 这个语句定义了一个开关xxx 否则xxx这个开关不存在
{$IFDEF XXX} 这里判断是否有XXX此开关.xxx本身没有值,xxx它存在与否才是返回值.

可以这样比方:{$DEFINE xxx}相当于 发出了一个武林盟主令牌,这个令牌本身不会变化

{$IFDEF XXX} 如果持有令牌则 听号令
{$ELSE} 没有令牌就不听号令
{$IFEND}
 
后退
顶部