在Delphi 7命令行编译器的帮助下,我只看到一个定义条件编译指令的选项:
-D<syms> = Define conditionals
是否可以取消定义条件?
我在IDE中定义了开发,并希望在命令行编译器中定义PRODUCTION。问题是命令行编译器保留IDE定义。我想在C世界中尽可能地解开它。
答案 0 :(得分:3)
您可以使用{$UNDEF NAME}
取消定义符号,相当于C和C ++中的#undef
。取消定义条件的工具仅适用于单位级别,不能在项目范围内应用。换句话说,您无法在命令行中取消设置条件。这与C或C ++工具集提供的功能没有什么不同。
一种非常常见的方法是将所有条件定义放在共享的.inc
文件中,然后将其包含在依赖于这些定义的每个源文件的头部。如果你以这种方式安排事情,那么你就拥有了所需的所有灵活性。
我知道它会有点安慰,但最近的Delphi版本对配置管理有更强大的支持。现代Delphi版本使用msbuild系统。它们允许在IDE和命令行中使用相同的配置选项。可以灵活地定义,例如,调试和发布构建选项,并轻松地在它们之间切换。我知道我很清楚地知道,我在IDE中使用与命令行相同的构建。在传统的德尔福版本中,我感觉不太安全。
答案 1 :(得分:3)
如果您没有提供命令行选项,您可以随时在单位中添加其他条件或包含如下文件:
{$DEFINE FOO}
// Allow us to undefine foo at the command line by defining UNDEFFOO
{$IFDEF UNDEFFOO}
{$UNDEF FOO}
{$ENDIF}
{$IFDEF FOO}
...
{$ENDIF}
然后使用-D设置UNDEFFOO。