编译器是否允许消除无限循环?
可以优化编译器删除无限循环,这不会改变任何数据,如
while(1) /* noop */;
从分析编译器可以推导出的数据流图,这样的循环是“死代码”而没有任何副作用。
是否删除了C90 / C99标准禁止的无限循环?
C90或C99标准是否允许编译器删除此类循环?
更新:“Microsoft C版本6.0基本上做了这个优化。”,请参阅caf的链接。
label: goto label;return 0;
将转变为
return 0;
泛舟湖上清波郎朗
繁星coding
相关分类