3

我想DateTimeToStr在调试项目时使用该功能。我想使用评估/修改窗口或监视窗口。这总是会导致错误“链接器消除的功能”。

我确保该函数被项目使用(我还在我要调试的函数中显式调用),我也关闭了优化并重新编译了整个项目。

4

1 回答 1

7

我做了以下程序

program WhereDidItGo;
{$APPTYPE CONSOLE}
uses
  SysUtils;

begin
  DateTimeToStr(0.0);
end.

并准确找到了您报告的内容。评估/修改窗口报告该功能已被消除。诡异的。

无论如何,我尝试了这个,这似乎足以欺骗它。

program WhyDoesThisSolveTheOddity;
{$APPTYPE CONSOLE}
uses
  SysUtils;

var
  FunctionPtr: function(const DateTime: TDateTime): string;
  VarFalse: Boolean;

begin
  if VarFalse then
    FunctionPtr := @DateTimeToStr;
end.

也许问题在于该函数被声明为 being inline。尽管在我的测试中,函数调用实际上并没有被内联。

于 2012-10-05T14:16:02.233 回答