Lazarus 基础-预处理指令集

Lazarus是一种类Delphi的开发语言,其有着同Delphi基本一致的预处理指令集。由于其脱胎于C,且具有较好的跨平台GUI解决方案,所以在实际应用中具有很高的商业应用价值。

用途:多数编译型编程语言都支持预处理指令,它能让我们在跨平台,或特殊用途下根据预先定义的条件来编译全部或部分代码。比如项目处于开发中调试状态时,我们会向工程中添加一些特殊调试代码以发现BUG或监控运行状态,但在发布时又不想将这些代码包含其中,于是预处理指令可以帮上这个忙。又或者在跨平台开发中,我们需要根据发布的指定平台(比如windows或linux)来编译指令代码,这时使用预处理指令是非常有必要的,它能让我们在一个工程中分别编译出不同平台的应用程序来,而不需要每个平台编写一个工程。


指令格式:{$指令名称 操作符}

定义位置:预处理指令通常定义在单元的头部,条件编译指令通常用于代码块中。

说明:同Pascal语法一样,预处理指令也是不区分大小写的;预处理指令是编译器FPC内置的,使用时无需引用任何单元。预处理指令也可以嵌套使用!

示例:

{$Ifdef Windows}

   {$ifdef Delphi_16UP}

      uses  VCL.Stdcall;

   {$Endif}

{$Else}

   uses Stdcall;

{$Endif}

一、基本指令集


指令名称

操作符

指令用途代码示例说明
CodePage

ANSI

UTF-7

UTF-8

UTF-16

Unicode

....

指定当前代码所使用的编码格式{$CodePage UTF-8}仅在Mode FPC模式下生效
Define宏名称自定义一个宏{$Define Debug}定义一个宏
Undef宏名称取消一个宏定义{$Undef Debug}取消宏定义
Ifdef宏名称判断某个宏是否被定义(是否存在宏)以决定是否执行代码

{$Ifdef Debug}

    A:=0;

{$Else}

    A:=1;

{$Endif}

    配对使用,同Else/EndIF一起使用                                   
else--IfDef/IfNDef的条件分支语句必须同IfDef /Ifndef一起使用
Endif--结束一个if指令必须同IfDef /Ifndef一起使用
IfNdef宏名称判断某个宏是否没有定义(是否不存在)        

{$IfNDef Debug}

    A:=0;

{$Else}

    A:=1;

{$Endif}

与IfDef刚好相反
Include / i文件名称包含一个外部文件{$Include File.inc}
if表达式判断表达式{$if defined(FPC) or defined(TYPE)}
MacroOn/Off宏指令开关

二、特殊预处理指令


指令名称操作符指令用途代码示例说明
Mode

Delphi

FPC

ObjFPC

指明FPC使用何种语法格式

{$Mode Delphi}使用Delphi语法

{$Mode ObjFpc}使用FreePascal语法

通常用于跨编译器保持代码兼容而设置
ModeSwitch

Out/In

.....

模式切换
InlineOn/Off内联指令 
Warning字符串IDE相关{$Warning your Message}在编译时在IDE里显示一个警告信息,但编译会继续
Error/STOP字符串IDE相关{$Error your error message}在编译时在IDE里显示一个错误信息,编译会停止 

备注:IDE相关的特殊处理指令仅仅是在使用IDE时有效,对程序的最终结果没有影响

三、系统自带的宏(部分,不断增加中...)


分类宏名称环境依赖说明
操作系统平台

Windows

MSWindows

Windows平台判断当前操作系统是否为Windows
Win3232位Windows平台判断当前操作系统是否为Win32平台     
Win6464位Windows平台
LinuxLinux平台
MacOSMacOS苹果桌面系统
AndroidAndroid安卓
AIXUnix平台IBM系统
Amiga一个早期的32位系统
UnixUnix平台
目标CPU平台X86_64
X86
i386
i8086
ARM
AArch64
LoongArch64

Free Pascal

Lazarus

Fpc_VersionFPC定义了FPC的版本号,整型

LCLGTK

LCLGTK2

LCLGTK3

LCLGTK4

LCLGTK5

GTK判断当前设置是否使用了GTK库

(未完待续...)

备注:由于资料过于缺乏,本文中少数来源于互联网,多数内容由作者翻看源代码同时亲自尝试得来,所以更新会比较慢,但如果发现内容有误请给我留言更正!

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值