2

这是一个后续问题,与我在 stackoverflow 上阅读的另一个问题上看到的答案有关。如果我希望禁用特定函数的溢出检查(根据此问题),此代码是否会导致在运行该函数后突然启用溢出检查,即使之前未在编译器选项或代码中启用它?

{$OVERFLOWCHECKS OFF}
// function here
{$OVERFLOWCHECKS ON}

我是否需要将其与 IFOPT 块(可能类似于示例?)以将溢出检查返回到以前的状态(以免意外启用对非调试版本的溢出检查)?还是两者不同,这就足够了?奖励:如果我确实需要 IFOPT,有条件地禁用溢出检查的具体语法是什么?

4

1 回答 1

14

是的,您发布的代码段将自动启用溢出检查,无论它之前是什么。

这应该有效。如果您愿意,可以分别替换{$Q+}and{$Q-}{$OVERFLOWCHECKS ON}and {$OVERFLOWCHECKS OFF}

{$IFOPT Q+}
  {$DEFINE OVERFLOW_ON}
  {$Q-}
{$ELSE}
  {$UNDEF OVERFLOW_ON}
{$ENDIF}
//
// Your code here
// 
{$IFDEF OVERFLOW_ON}
  {$Q+}
  {$UNDEF OVERFLOW_ON}
{$ENDIF}
于 2012-07-25T21:02:14.510 回答