这是一个后续问题,与我在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)