1.DELPHI的编译指令
格式:{$指令 满足指令的条件}
对于Delphi来说﹐左右大括号之间的内容是批注﹐然而「{$」(左括号后紧接着货币符号)对于Compiler(编译器)而言并不是批注﹐而是写给Compiler看的特别指示,就是编译指令。编译指令时给计算机看的,用于区别在不同的场合下进行编译不同代码的文件。
网上搜了一下编译指令的用处,写的挺不错,拿来分享下:
1.协助除错
稳健熟练的程序设计师经常会在开发应用系统的过程中﹐特别加入一些除错程序或者回馈验算的程序﹐这些除错程序对于软件品质的提升有极其正面的功能。然而开发完成的正式版本中如果不需要这些额外的程序的话﹐要想在一堆程序中找出哪些是除错用的程序并加以删除或设定为批注﹐不仅累人﹐而且容易出错﹐况且日后维护时这些除错程序还用得着。
此时如果能够应用像是$IFDEF的Compiler Directives ﹐就可以轻易的指示Delphi要/不要将某一段程序编进执行文件中。
同时﹐Compiler本身也提供了一些错误检查的开关﹐可以预先对程序中可能的问题提醒程序设计师注意﹐同样有助于撰写正确的程序。
2.版本分类
除了上述的除错版本/正式版本的分类之外﹐对于像是「试用版」「普及版」「专业版」的版本分类﹐也可以经由Compiler Directive的使用﹐为最后的产品设定不同的使用权限。其它诸如「中文版」「日文版」「国际标准版」等全球版本管理方面﹐同样也可以视需要指示Delphi特别连结哪些资源档或者是采用哪些适当的程序。以上的两则例子中﹐各版本间只需共享同一份程序代码即可。
Delphi 1.0 与 Delphi 2.0有许多不同之处﹐组件资源文件(.DCR)即是其中一例﹐两者的档案格式并不兼容﹐在您读过本文之后﹐相信可以写出这样的程序﹐指示Delphi在不同的版本采用适当的资源文件以利于组件的安装。
- {$IFDEF WIN32}
- {$R XXX32.DCR}
- {$ELSE}
- {$R XXXX16.DCR}
- {$EDNIF}
{$IFDEF WIN32}
{$R XXX32.DCR}
{$ELSE}
{$R XXXX16.DCR}
{$EDNIF}
现在分享下条件指令,其他的等待研究!
定义:条件指令(Conditional directives)
指示Compiler在编译的过程中, 按我们设定的条件, 选择性的采用/排除不同区域的程序代码。以下是一个条件编译的例子, 第一与第三列是写给Compiler看的,指示 Compiler在 __DEBUG这个条件名称完成定义的情况才编译ShowMessage()这列程序;反之, 如果 __DEBUG 当时没有定义的话, 这段程序几乎与批注无异, Compiler对它将视而不见。
- {$IFDEF __DEBUG}
- ShowMessage(IntToStr(i));
- {$ENDIF}
{$IFDEF __DEBUG}
ShowMessage(IntToStr(i));
{$ENDIF}
一些常用的条件编译指令
- 条件编译指令 含义
- $DEFINE //用于定义一个条件符号,一旦定义,条件符号就为真
- $ELSE //与$IFDEF配合使用,如果$IFDEF条件为假,则只对源文件$ELSE后一小部分进行编译
- $ENDIF //结束一个以$IF开始的条件段
- $IFDEF //对条件符号进行判断,为真则编译源文件
- $IFNDEF //对条件符号进行判断,为假则编译源文件
- $IFOPT //根据编译开关状态,对源文件编译
- $UNDEF //撤消以前的条件符号定义