Inno setup 是否在Inno设置预处理器中包含一次功能?

Inno setup 是否在Inno设置预处理器中包含一次功能?,inno-setup,Inno Setup,我正在创建一个脚本方法库,只想在安装程序中需要时包含它们 有些方法需要使用其他方法,因此我将所需方法的#include“filename.iss”放在需要它的方法的文件中 但是,如果我在一个安装程序脚本文件中包含两个文件,其中也包含一个公共文件,则在包含该文件的第二个文件中会出现“重复标识符””错误 我搜索了类似于#include once的内容,但找不到任何结果 要复制,可以将同一文件包含两次: #include "AddReplaceLinesInFile.iss" #include "Ad

我正在创建一个脚本方法库,只想在安装程序中需要时包含它们

有些方法需要使用其他方法,因此我将所需方法的
#include“filename.iss”
放在需要它的方法的文件中

但是,如果我在一个安装程序脚本文件中包含两个文件,其中也包含一个公共文件,则在包含该文件的第二个文件中会出现“
重复标识符”
”错误

我搜索了类似于
#include once
的内容,但找不到任何结果

要复制,可以将同一文件包含两次:

#include "AddReplaceLinesInFile.iss"
#include "AddReplaceLinesInFile.iss"
我能看到的避免这种情况的唯一方法是,不要将include和需要它们的方法放在文件中,而只是将它们添加到主安装程序脚本中

我将include保留在需要它们的方法文件的顶部,但将它们注释掉-用于文档目的,并便于复制和粘贴到我的主安装程序脚本中。但是,我更喜欢使用类似于
包含一次
的功能

Inno安装程序是否有类似于
include once
的功能,或者是否有一种方法可以测试已定义的方法,以便我可以创建类似的功能


TIA

没有包含一次的事情

Inno设置是基于Pascal的,其中函数(和过程)是全局的!没有私人的

预处理器符号的作用域为.iss文件,并使其全局使用public关键字

变量具有令人不快的行为:如果您使用与局部变量相同的名称定义全局变量(在[Code]部分),您永远不知道该值真正分配到哪个变量中


编译器没有检查这一点,这是非常糟糕的。

使用与C/C++中相同的技巧,即:

<>在C和C++编程语言中,一个<强> >包含守护< /强>,有时称为<强>宏守护< /St>,是一个特殊的构造,用于避免在包含指令时包含双重包含的问题。
#ifndef UniqueName
#define UniqueName
将包含文件中的代码包围起来<代码>#endif

#如果包括
#定义包容性
程序测试;
开始
结束;
#恩迪夫
UniqueName
通常与文件名相同,并删除标点符号(使其成为有效标识符)。也就是说,对于
include.iss
,名称可以是
IncludeIss