下面有代码,并且在
之前运作良好unit Unit1;
{$DEFINE _Full}
// {$DEFINE _Trial}
interface
uses Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms;
{$ifdef _Trial}
_programname='abc';
{$endif}
{$ifdef _Full}
_programname='abc';
{$endif}
但今天我运行Delphi并尝试编译,它报告了
Identifier redeclared: '_programname'
看起来像
{$DEFINE _Full}
不起作用
欢迎评论
答案 0 :(得分:4)
两个条件都已定义。这可以从编译器错误中推断出来。
单行//
注释不会注释掉定义。或者您在项目级别定义_Trial
。据我所知,单行//
注释将注释掉指令。所以我假设_Trial
是在项目级别定义的。
注释掉定义的惯用方法是这样的:
{.$DEFINE _Trial}
对于任何一种或条件,单个条件可能更简单:
{$IFDEF _Trial}
.... stuff for trial version
{$ELSE}
.... stuff for full version
{$END}
所有这些,也许您的实际问题是不同的,因为您显示的代码与您报告的错误消息不匹配。我希望有一个错误,说明了关键字,但找到了标识符_programname
。在声明const
之前,问题中的代码似乎省略了_programname
关键字。
答案 1 :(得分:0)
我在假设_programname应该是一个常量的情况下提交这个,因为这与t一致 你正在展示的代码。您的常量声明需要在CONST节块中声明。试试这个:
unit Unit1;
{$DEFINE _Full}
// {$DEFINE _Trial}
interface
uses Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms;
CONST //<< Changed Code
{$ifdef _Trial}
_programname='abc';
{$endif}
{$ifdef _Full}
_programname='abc';
{$endif}