转载:https://blog.youkuaiyun.com/dddd0216/article/details/50446062
今天调试程序时候,写了一个延时函数竟然发现没有延时作用,如下:
static void delay(void) //static 作用:函数隐藏 变量持久和默认0
{
unsigned int i, j;
for(i=0; i<5000; i++)
for(j=0; j<1000; j++);
}
注:调试时没有延时作用
解决办法:
static void delay(void) //static 作用:函数隐藏 变量持久和默认0
{
volatile unsigned int i, j;
for(i=0; i<5000; i++)
for(j=0; j<1000; j++);
}
注:当加上volatile关键字时,不对无符号整型i, j进行优化。问题就解决了
本文介绍了一种在C语言中遇到的延时函数失效的问题及解决方案。作者在调试程序时发现原本用于延时的函数并未起到预期的效果。通过在循环变量前加上volatile关键字,阻止了编译器对变量的优化,从而实现了有效的延时。
568

被折叠的 条评论
为什么被折叠?



