这是一个后续问题,与我在stackoverflow上阅读的另一个问题上看到的答案有关。如果我希望禁用特定函数的溢出检查(每this question),此代码是否会导致溢出检查在运行该函数后突然变为启用,即使之前未在编译器选项中启用或码?
{$OVERFLOWCHECKS OFF}
// function here
{$OVERFLOWCHECKS ON}
我是否需要将其与IFOPT块(可能类似于this示例?)相结合,以将溢出检查返回到先前的状态(以便不会意外地在非调试版本上启用溢出检查) ?或两者是不同的,这就足够了吗?额外奖励:如果我确实需要IFOPT,那么具体的语法是什么才能有条件地禁用溢出检查?
答案 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}