在Delphi中禁用溢出检查

Jes*_*own 2 delphi

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

{$OVERFLOWCHECKS OFF}
// function here
{$OVERFLOWCHECKS ON}
Run Code Online (Sandbox Code Playgroud)

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

Ken*_*ite 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}
Run Code Online (Sandbox Code Playgroud)