为什么 Delphi (dcc32.exe) 有一个设置“命名空间搜索路径”的选项?

2024-02-04

Delphi 2007及更高版本中的编译器(dcc32.exe)有一个选项

-NS<namespaces> = Namespace search path

这是否与项目选项对话框中的编译器选项“默认命名空间”和“命名空间前缀”有关?搜索“路径”听起来像一个文件夹(目录)名称,所以我不确定这个选项有什么用。


此设置的目的是提供用于搜索不完全限定的单位名称的前缀列表。例如,在较旧的 Delphi 版本中,您的设备的界面部分通常会有类似这样的内容:

uses
  Windows, SysUtils, Classes;

这将指示编译器使用Windows, SysUtils and Classes尝试定位未知标识符时的单位。

在更现代的 Delphi 中,它的工作方式大致相同,只是单位不再称为Windows or SysUtils, 反而WinApi.Windows or System.SysUtils。如果你只使用Windows or SysUtils,他们就不会被发现。

但是,当然,没有人愿意将所有源代码重写为新的单位名称。 Delphi 编译器提供了一个选项,用于指定在未找到确切的单元名称时默认搜索的名称空间。在上面的示例中,我们可以将默认命名空间设置为WinApi;System然后所有的单元都会被正确找到,因为 Delphi 编译器会尝试搜索Windows(未找到),WinApi.Windows(找到-转到下一个单元),SysUtils(未找到),WinApi.SysUtils(未找到),System.SysUtils(找到-转到下一个单元),...,System.Classes(找到 - 找到所有必需的单位)。

如果您使用 GUI,通常不会处理这个问题,因为命名空间列表是项目文件的一部分,并且提供了合理的默认值。如果您使用命令行从命令行构建应用程序,则同样适用msbuild.exe和项目文件。但如果你使用dcc*.exe*.dpr,那么你必须提供你想要自动应用的命名空间 - 这就是-NS选项是为了.在我们的示例中,您可以使用-NSWinApi;System.

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

为什么 Delphi (dcc32.exe) 有一个设置“命名空间搜索路径”的选项? 的相关文章

随机推荐