为什么dcc64表示从未使用此值?

布兰登·斯塔格斯

下面的代码来自DDetours.pas。当它编译为32位时,不会发出任何警告。当它编译为64位时,它发出此警告:(Delphi Berlin Update 2)

[dcc64 Hint] DDetours.pas(1019): H2077 Value assigned to 'Prf' never used

这是有问题的功能

function GetPrefixesCount(Prefixes: WORD): Byte;

var
  Prf: WORD;
  i: Byte;
begin
  { Get prefixes count used by the instruction. }
  Result := 0;
  if Prefixes = 0 then
    Exit;

  Prf := 0;
  i := 0;
  Prefixes := Prefixes and not Prf_VEX;
  while Prf < $8000 do
  begin
    Prf := (1 shl i);
    if (Prf and Prefixes = Prf) then
      Inc(Result);
    Inc(i);
  end;
end;

在我看来,这确实像是第一次将Prf与使用初始值的8000美元进行比较。

大卫·赫弗南(David Heffernan)

这是一个编译器错误。有一些这种性质。相当令人沮丧。有时32位编译器会以不合理的方式抱怨,然后当您解决时,64位编译器又会以不合理的方式抱怨您的解决方法。

我不认为Embarcadero习惯于启用提示和警告的编译器,因为他们的库代码中充满了提示和警告。

无论如何,在这种情况下,编译器会看到对变量的两次写入,但由于某种原因无法识别出变量的中间读取。

您无能为力。您可以提交错误报告。我希望您不想更改代码,因为它是第三方代码。如果不进行更改,则必须忍受虚假提示。

通知库的作者可能会允许他们解决此问题。也许通过抑制该功能的提示。

本文收集自互联网,转载请注明来源。

如有侵权,请联系[email protected] 删除。

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章

来自分类Dev

为什么此“获取或创建”功能似乎从未插入?

来自分类Dev

为什么从未使用过IPv5?

来自分类Dev

为什么此char *何时更改值?

来自分类Dev

为什么此结构需要大小值?

来自分类Dev

为什么此变量的值不确定

来自分类Dev

为什么未按值复制此对象

来自分类Dev

为什么此代码返回垃圾值?

来自分类Dev

为什么此char *何时更改值?

来自分类Dev

为什么此变量的值会更改?

来自分类Dev

为什么“ H2077分配给X的值从未使用过”为什么不被字符串变量占用?

来自分类Dev

无符号64位到双精度转换:为什么从G ++开始使用此算法

来自分类Dev

为什么是NaN,但为什么打印此值?

来自分类Dev

为什么从未调用$ routeChangeSuccess?

来自分类Dev

使用VBA / excel根据值设置范围(为什么此代码行不通?)

来自分类Dev

为什么可以使用此“私有”值构造函数?

来自分类Dev

为什么我不能使用XElement读取此XML值?

来自分类Dev

如果输入的是字符,为什么此代码会输出64?

来自分类Dev

为什么此查询不使用索引?

来自分类Dev

为什么此代码使用多种引号

来自分类Dev

为什么此查询不使用索引?

来自分类Dev

为什么此CSS“转换”值是“无效的属性值”

来自分类Dev

为什么此CSS“转换”值是“无效的属性值”

来自分类Dev

onClickButtonListener表示从未使用过

来自分类Dev

从未使用分配的值-Java

来自分类Dev

为什么Quartz表示此cron表达式无效?

来自分类Dev

为什么MousePressed从未被调用?

来自分类Dev

为什么我的elseif陈述从未执行

来自分类Dev

为什么我的timeToLiveFunction从未调用过?

来自分类Dev

为什么从未调用DispatchGroup deinit?

Related 相关文章

热门标签

归档