如何关闭GCC中的所有优化?使用-O0不起作用,因为它仍然优化了没有效果的语句,或者在没有任何break语句的无限循环之后的任何代码。
答案 0 :(得分:7)
没有办法让gcc不会忽略无法访问的无法访问的代码和语句。
您可以做的是使用volatile变量使无法访问的代码可以访问。
volatile bool always_true = true;
if( always_true )
{
//infinite loop
//return something
}
//Useless code
在上面的例子中,gcc不会选择无用的代码,因为它无法知道它实际上是无用的
int a = 5;
int b = 5;
volatile int c = 9;
c += 37;
return a + b;
在这个例子中,整数c不会被优化掉,因为gcc确实不知道它是自重代码。
答案 1 :(得分:2)
您必须使编译器几乎无法对代码进行优化。 例如:
volatile
关键字