说我有以下程序:
#include <iostream>
float foo(float f)
{ return (f / 0); }
int main(void) {
foo(1.0f);
std::cout << "hello" << std::endl;
}
如果我调用clang++ -fsanitize=undefined main.cpp && ./a.out
,它将输出:
main.cpp:4:32: runtime error: division by zero
hello
有没有办法在检测到错误后立即终止a.out
?即以这种方式显示:
main.cpp:4:32: runtime error: division by zero
没有在以下行显示hello
? (因为它之前已经终止)
答案 0 :(得分:4)
您需要使用-fno-sanitize-recover
命令行参数:
clang++ -fsanitize=undefined -fno-sanitize-recover=undefined main.cpp