如此问题中所述:LLVM和GCC,不同的输出相同代码,LLVM和GCC导致相同代码的输出不同.
#include <stdio.h>
#define MAX(a,b) ( (a) > (b) ? (a) : (b) )
int increment() {
static int i = 42;
i += 5;
printf("increment returns %d\n",i);
return i;
}
int main( int argc, char ** argv ) {
int x = 50;
printf("max of %d and %d is %d\n", x,increment(),MAX(x, increment()));
printf("max of %d and %d is %d\n", x,increment(),MAX(x, increment()));
return 0;
}
Run Code Online (Sandbox Code Playgroud)
LLVM输出给出:
increment returns 47
increment returns 52
increment returns 57
max of 50 …Run Code Online (Sandbox Code Playgroud)