delphi的常用条件编译指令---{$IFDEF} {$UNDEF}{$IFDEF}{$ELSE}{$ENDIF} .

1.DELPHI的编译指令

格式:{$指令 满足指令的条件}  

对于Delphi来说﹐左右大括号之间的内容是批注﹐然而「{$」(左括号后紧接着货币符号)对于Compiler(编译器)而言并不是批注﹐而是写给Compiler看的特别指示,就是编译指令。编译指令时给计算机看的,用于区别在不同的场合下进行编译不同代码的文件。


网上搜了一下编译指令的用处,写的挺不错,拿来分享下:

1.协助除错

    稳健熟练的程序设计师经常会在开发应用系统的过程中﹐特别加入一些除错程序或者回馈验算的程序﹐这些除错程序对于软件品质的提升有极其正面的功能。然而开发完成的正式版本中如果不需要这些额外的程序的话﹐要想在一堆程序中找出哪些是除错用的程序并加以删除或设定为批注﹐不仅累人﹐而且容易出错﹐况且日后维护时这些除错程序还用得着。
    此时如果能够应用像是$IFDEF的Compiler Directives ﹐就可以轻易的指示Delphi要/不要将某一段程序编进执行文件中。 
    同时﹐Compiler本身也提供了一些错误检查的开关﹐可以预先对程序中可能的问题提醒程序设计师注意﹐同样有助于撰写正确的程序。

2.版本分类

    除了上述的除错版本/正式版本的分类之外﹐对于像是「试用版」「普及版」「专业版」的版本分类﹐也可以经由Compiler Directive的使用﹐为最后的产品设定不同的使用权限。其它诸如「中文版」「日文版」「国际标准版」等全球版本管理方面﹐同样也可以视需要指示Delphi特别连结哪些资源档或者是采用哪些适当的程序。以上的两则例子中﹐各版本间只需共享同一份程序代码即可。
    Delphi 1.0 与 Delphi 2.0有许多不同之处﹐组件资源文件(.DCR)即是其中一例﹐两者的档案格式并不兼容﹐在您读过本文之后﹐相信可以写出这样的程序﹐指示Delphi在不同的版本采用适当的资源文件以利于组件的安装。

  1. {$IFDEF WIN32}   
  2. {$R XXX32.DCR}   
  3. {$ELSE}   
  4. {$R XXXX16.DCR}   
  5. {$EDNIF}  
{$IFDEF WIN32} 
{$R XXX32.DCR} 
{$ELSE} 
{$R XXXX16.DCR} 
{$EDNIF}


指令分为三种:1.开关指令  2.条件指令 3.参数指令


现在分享下条件指令,其他的等待研究!

定义:条件指令(Conditional directives) 
指示Compiler在编译的过程中, 按我们设定的条件, 选择性的采用/排除不同区域的程序代码。以下是一个条件编译的例子, 第一与第三列是写给Compiler看的,指示 Compiler在 __DEBUG这个条件名称完成定义的情况才编译ShowMessage()这列程序;反之, 如果 __DEBUG 当时没有定义的话, 这段程序几乎与批注无异, Compiler对它将视而不见。 
 

  1. {$IFDEF __DEBUG}   
  2. ShowMessage(IntToStr(i));   
  3. {$ENDIF}  
{$IFDEF __DEBUG} 
ShowMessage(IntToStr(i)); 
{$ENDIF}
一些常用的条件编译指令

  1. 条件编译指令    含义   
  2.   
  3.    $DEFINE //用于定义一个条件符号,一旦定义,条件符号就为真    
  4.   
  5.    $ELSE   //与$IFDEF配合使用,如果$IFDEF条件为假,则只对源文件$ELSE后一小部分进行编译    
  6.   
  7.    $ENDIF   //结束一个以$IF开始的条件段    
  8.   
  9.    $IFDEF   //对条件符号进行判断,为真则编译源文件    
  10.   
  11.    $IFNDEF //对条件符号进行判断,为假则编译源文件    
  12.   
  13.    $IFOPT   //根据编译开关状态,对源文件编译    
  14.   
  15.    $UNDEF   //撤消以前的条件符号定义 
#ifdef是C语言中的预处理指令,用于判断某个宏是否被定义。如果某个宏已经被定义,则执行随后的语句。\[1\]#elif是#if或前面的#elif条件不满足时执行的语句,相当于C语言中的else-if。\[1\]defined是与#if和#elif配合使用的,用于判断某个宏是否被定义。\[1\]#else是与#if、#ifdef、#ifndef对应的,如果这些条件不满足,则执行#else之后的语句,相当于C语言中的else。\[1\]#endif是#if、#ifdef、#ifndef这些条件命令的结束标志。\[1\] 所以,如果你想判断某个宏是否被定义,你可以使用#ifdef指令。如果某个宏未被定义,则可以使用#ifndef指令。如果你需要在多个条件中进行选择,可以使用#elif指令。如果以上条件都不满足,则可以使用#else指令。最后,使用#endif指令来结束条件判断。\[1\] #### 引用[.reference_title] - *1* [一文搞懂 条件编译和预处理指令 #define、#undef、#ifdef、#ifndef、#if、#elif、#else、#endifdefined ...](https://blog.csdn.net/weixin_40933653/article/details/123910485)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v91^insertT0,239^v3^insert_chatgpt"}} ] [.reference_item] - *2* *3* [条件编译:#if #ifdef #ifndef #elif #else #endif的用法](https://blog.csdn.net/weixin_49872754/article/details/122723592)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v91^insertT0,239^v3^insert_chatgpt"}} ] [.reference_item] [ .reference_list ]
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值