Delphi中是否支持声明带有初始值的全局变量?
Delphi 全局变量带初始值声明方案
你提到的var MyGlobalVar: integer := 16;写法仅适用于局部/内联变量,普通全局变量默认不支持该语法,这是因为普通全局变量存储在进程的数据段,旧版本Delphi没有为其提供声明时直接赋值的语法支持,以下是两种可行的实现方式:
方法1:使用 initialization 节初始化(全版本兼容)
这是所有Delphi版本都支持的通用方案,在单元的initialization段完成全局变量的初始值赋值,示例代码如下:
unit YourUnit; interface var MyGlobalVar: Integer; // 先声明全局变量 implementation // 单元的业务代码部分 initialization MyGlobalVar := 16; // 在initialization段赋初始值 end.
注意:多个单元的
initialization段执行顺序和单元在uses子句中的引入顺序一致,如果你需要在其他单元的初始化逻辑中使用该全局变量,需要注意调整单元引用顺序。
方法2:使用static修饰符(Delphi 10.4 及以上版本支持)
从Delphi 10.4 Sydney版本开始,新增了支持初始化的全局变量语法,只需要给全局变量加上static修饰符,就可以直接在声明时赋值:
var MyGlobalVar: static Integer := 16;
这种写法和你原先的写法仅差一个static关键字,使用起来和普通全局变量没有区别,内部会自动在初始化阶段完成赋值操作。
内容的提问来源于stack exchange,提问作者zeus
相关产品推荐
相关产品推荐

