初学者可能不太关心优化选项,但对于有经验的工程师来说,掌握代码优化是必备技能。
今天的话题是关于关键字在代码优化中优化过程中的作用。
一、关于
是类型修饰符 ( type )。
is的作用是作为一个指令关键字,保证这条指令不会因为编译器优化而被省略,每次都需要直接读取值。
变量是指这个变量可能会被意外改变,这样编译器就不会假定这个变量的值。
—来自百度百科
的定义,看的时候应该看过无数遍了。 但我相信大多数人对其中的含义并没有深刻的理解。
但是当你真正对项目进行编程和开发时,你会进一步理解其中的含义。
二、关键字对编译器优化的影响
我们都知道编译器有优化代码的功能网站关键词优化,我们常用的集成开发环境(Keil、IAR)都有优化选项。
如果您声明一个没有关键字的变量,编译器可能会干扰变量访问并生成意外代码或删除预期功能。
1、什么时候用?
声明的常见用例:
例如STM32代码中:
#/*!< Defines 'write only' permissions */ __O volatile
#/*!< Defines 'read / write' permissions */ __IO volatile
浏览代码,你会发现很多地方都用到了“__IO”,也就是。
在运行系统的项目中,建议在线程间共享的全局变量中加入关键字。 很多人不关心这个。
2、不使用时可能出现的问题
如果一个变量没有用 声明,编译器假定它的值不能在定义它的范围之外被修改。
因此,编译器可能会执行不需要的优化。 这可以通过多种方式表现出来:
例子:
自己写一个延时函数:
void Delay(int Cnt)
{
int i;
while(Cnt--)
{
i++;
for(i=0; i<10; i++);
}
}
当你处于不同的优化级别时网站关键词优化,延迟时间可能会有所不同;
同样的代码网站关键词优化,你在Keil和IAR环境下编译的延迟时间也可能不同。
当然,更深入的理解会涉及到汇编代码,编译后的汇编代码会更直观地表现出差异。
除非注明,否则均为未来可期SEO原创文章,转载必须以链接形式标明本文链接