Delphi编译指令了解学习

以下内容来源于网络,整理在一块儿方便以后回顾查看。

Delphi 的编译指令(1) D E F I N E 、 DEFINE、 DEFINEUNDEF、 I F D E F 、 IFDEF、 IFDEFELSE、$ENDIF

一个程序从无到有的过程是这样的: 编辑代码 -> 预处理 -> 编译(成dcu等) -> 链接(为exe等).

什么是预处理?
譬如 VCL 中有很多代码是兼容 Linux 的, 在 Windows 下就需要在编译之前预处理掉那些 for Linux 的代码.

1、判断操作系统:
其中的 “MSWINDOWS” 和 “LINUX” 就是 Delphi 预定义的 “条件标识符”.

begin
  {$IFDEF MSWINDOWS}
    ShowMessage('Windows');
  {$ENDIF}

  {$IFDEF LINUX}
    ShowMessage('Linux');
  {$ENDIF}
end;

2、自定义条件标识符(DEFINE):
下面例子中自定义了条件标识符: WanYi; 标识符和定义它的指令都不区分大小写, 但大家一般惯用大写.

begin
  {$DEFINE WANYI}
  {$IFDEF WanYi}
    ShowMessage('标识符 WanYi 已定义');
  {$ELSE}
    ShowMessage('标识符 WanYi 未定义');
  {$ENDIF}
end;

3、取消条件标识符的定义(UNDEF):

begin
  {$DEFINE WANYI}
  {$IFDEF WANYI} 
    ShowMessage('确认标识符 WanYi 是否定义');
  {$ENDIF}

  {$UNDEF WANYI}
  {$IFDEF WANYI} 
    ShowMessage('再次确认标识符 WanYi 是否定义');
  {$ENDIF}
end;

4、取消定义的简单办法:
在 {$…} 的 $ 前面随便加点什么, 让它变成 “注释”, 譬如: {.$}

begin
  {.$DEFINE WANYI}
  {$IFDEF WANYI} 
    ShowMessage('确认标识符 WanYi 是否定义');
  {$ENDIF}

  {.$UNDEF WANYI}
  {$IFDEF WANYI} 
    ShowMessage('再次确认标识符 WanYi 是否定义');
  {$ENDIF}
end;

5、调试编译指令时特别要注意的:
Delphi 有个常识: 如果单元代码没有改变, 相应的 dcu 不会重新生成!

因此, 为了有准确的调试结果, 执行前先用 Shift+F9 强制编译当前工程, 然后再 Run;
强制编译所有相关单元也可以, 方法: Project -> Build all project.

当然修改下代码也很方便, 譬如在代码中打个空格再退回来.

6、测试预定义的 Debug 和 Release:
当我们当新建一个工程, Delphi 默认的是调试(Debug)状态, 当我们发布软件时应该切换到发布(Release)状态.
两种状态下编译指令是有区别的, 在 Release 状态下发布的 dcu 或 exe 会更小、更优化.

Debug 和 Release 的切换方法:
进入 Project Manager -> Build Configurations, 在 Debug 或 Release 上双击, 或从右键 Activate.

下面的代码可以检测到这种改变, 不过要注意上面提到的 Shift+F9 或 Project -> Build all

project.
begin
  {$IFDEF DEBUG}
    ShowMessage('调试模式');
  {$ENDIF}

  {$IFDEF RELEASE}
    ShowMessage('发布模式');
  {$ENDIF}
end;

7、编译指令写在哪?:
编译指令可以写在代码页的任何地方, 不过在代码的不同区域有时也会不同;

譬如: { KaTeX parse error: Expected 'EOF', got '}' at position 12: APPTYPE GUI}̲ 和 { APPTYPE CONSOLE} 就只能写在工程文件里才有效.

{ KaTeX parse error: Expected 'EOF', got '}' at p

  • 0
    点赞
  • 6
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值