0

我有以下 C 代码。

#include <avr/io.h>
int main(void) {
DDRA = 0xFF;
PORTA = 0x00;   
while(1) {
    /*volatile*/ unsigned long int counter;
    for (counter=0; counter<14285L; counter++) {
        PORTA = ~PINA; // run to cursor here
    }
}
return(0);
}

此代码可用于 Atmega128 微控制器板上。

注意到注释词“volatile”。当我在 Atmel Studio 中模拟它时,用“volatile”注释掉它以 19 个周期运行。当它没有被评论时,它以 46 个周期运行。

为什么会有巨大的差异?

4

1 回答 1

1

volitile 关键字是对编译器的一个提示,即不应进行某些优化,因为由于诸如中断之类的原因,无法假定该值保持不变。如果没有优化,事情会运行得更慢。

于 2013-10-01T02:53:17.643 回答