一个延时函数:
#include <stdio.h>
#include <stdlib.h>
#include <time.h>
void delay(){
    int i = 0;
    int j = 0;
    for(i = 0;i < 50000;i++){
        for(j = 0;j < 50000;j++);
    }
}
int main(int argc, char **argv){
    printf("time = %ld\n",time(NULL));
    delay();
    printf("time = %ld\n",time(NULL));
    return 0;
}编译运行:
gcc volatile1.c
./a.out运行结果,从结果可知,这个delay运行了3秒。

使用-O3编译,并运行
gcc volatile1.c
./a.out执行结果如下,从结果可知delay函数被优化了。

为了不让delay中的i和j变量被优化,给它加volatile修饰,修改后的代码如下
#include <stdio.h>
#include <stdlib.h>
#include <time.h>
void delay(){
    volatile int i = 0;
    volatile int j = 0;
    for(i = 0;i < 50000;i++){
        for(j = 0;j < 50000;j++);
    }
}
int main(int argc, char **argv){
    printf("time = %ld\n",time(NULL));
    delay();
    printf("time = %ld\n",time(NULL));
    return 0;
}使用-O3编译,并运行
gcc volatile1.c
./a.out执行结果如下,从结果可知delay函数没有被优化了。




















