如何防止GCC优化繁忙的等待循环?
我想为Atmel AVR微控制器编写C代码固件。我将使用GCC进行编译。另外,我想启用编译器优化(-Os或-O2),因为我没有理由不启用它们,并且它们可能比手动编写程序集更快地产生更好的组装方式。 但是我想要一小段未优化的代码。我想将函数的执行延迟一段时间,因此我想编写一个空循环,以浪费时间。无需精确,只需等待一段时间。 /* How to NOT optimize this, while optimizing other code? */ unsigned char i, j; j = 0; while(--j) { i = 0; while(--i); } 由于AVR内存访问是慢了很多,我想i和j被关在CPU寄存器。 更新:我刚刚从AVR Libc中找到util / delay.h和util / delay_basic.h。尽管大多数时候使用这些功能可能是一个更好的主意,但这个问题仍然有效且有趣。 相关问题: 如何防止gcc在C语言中优化某些语句? 有没有办法告诉GCC不要优化特定代码? 如何不优化-愚蠢功能的机制