free pascal dialect
Free pascal 本身支持多种dialect方言(或者叫mode), 支持 objfpc/delphi/delphiunicode, 还有 tp/iso 等不常用的方言.
在一个项目中, dialect 是 per unit 设定的.
不同方言支持的语法有些许区别, 主要不同体现在: string类型具体实现形式不同, 泛型语法不同, 函数指针语法等.
官方文档:
$mode指令: https://www.freepascal.org/docs-html/prog/progap4.html#progse62.html
$H指令: https://www.freepascal.org/docs-html/prog/progsu25.html
$MODESWITCH 指令: https://www.freepascal.org/docs-html/prog/progsu106.html
各种string的说明: https://wiki.freepascal.org/FPC_Unicode_support#RTL_todos
需要说明的是, {$mode objfpc}{$H+} 下, string 其实为 AnsiString , Lazarus 项目缺省模式 , 但如果在开启 {$MODESWITCH UNICODESTRINGS} , string 将变为UnicodeString.
下面Free pascal 程序不能运行, 但可以通过报错信息测试, 在不同mode下string类型等价于哪种具体实现类型.
program Project1; //{$mode objfpc}{$H+} //string 其实为 AnsiString , Lazarus 项目缺省模式 //{$mode objfpc } //string 其实为 ShortString //{$mode DELPHI } //string 其实为 AnsiString //{$mode DELPHIUNICODE } //string 其实为 UnicodeString //$mode指令: https://www.freepascal.org/docs-html/prog/progap4.html#progse62.html //$H指令: https://www.freepascal.org/docs-html/prog/progsu25.html uses SysUtils, classes; var msg:string ; AList:TList ; begin AList:=TList.create() ; Alist.Add(msg); end.
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· AI与.NET技术实操系列:向量存储与相似性搜索在 .NET 中的实现
· 基于Microsoft.Extensions.AI核心库实现RAG应用
· Linux系列:如何用heaptrack跟踪.NET程序的非托管内存泄露
· 开发者必知的日志记录最佳实践
· SQL Server 2025 AI相关能力初探
· 震惊!C++程序真的从main开始吗?99%的程序员都答错了
· 【硬核科普】Trae如何「偷看」你的代码?零基础破解AI编程运行原理
· 单元测试从入门到精通
· 上周热点回顾(3.3-3.9)
· winform 绘制太阳,地球,月球 运作规律
2011-11-03 使用python开发命令行程序的知识点
2011-11-03 cx_Oracle模块介绍
2011-11-03 python的数据库模块
2011-11-03 将Komodo Edit打造成Python开发的IDE