【发布时间】:2012-07-08 19:41:57
【问题描述】:
我正在做一个多平台项目,有些平台禁用了一些功能,在这些功能的界面中,我经常做的事情是这样的:
bool Foo::bar() const {
// disabled
abort();
}
GCC/LLVM 不要求非 void 函数返回值(它们只是给出警告),在这种情况下,我调用 abort(),它们足够聪明,甚至不会给出警告(因为函数无论如何都不会回来)。
有没有办法(编译标志?)使 Visual C++ 2010 的行为方式相同,所以我不会一直破坏 Windows 构建?我知道我总是可以在中止后返回值,但是在其他平台上工作时我通常会忘记这一点,并且不给出错误的行为似乎更合适。
【问题讨论】:
-
另一方面,当我确实包含无用的返回时,它有时会给我一个“无法访问代码”的警告......哈哈
-
直接调用
abort似乎是一种不好的做法。为什么不使用assert(false)? -
@JurajBlaho assert(false) 将导致发布版本出现警告 (GCC/LLVM)。
-
...根据环境,assert(FALSE) 可能会在预处理器处理完源代码后变为空操作。
标签: c++ visual-c++ unreachable-code