在Delphi中禁用溢出检查

时间:2012-07-25 20:42:49

标签: delphi

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

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

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

1 个答案:

答案 0 :(得分:13)

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

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

{$IFOPT Q+}
  {$DEFINE OVERFLOW_ON}
  {$Q-}
{$ELSE}
  {$UNDEF OVERFLOW_ON}
{$ENDIF}
//
// Your code here
// 
{$IFDEF OVERFLOW_ON}
  {$Q+}
  {$UNDEF OVERFLOW_ON}
{$ENDIF}