void FunB() { } 上面的意思就是说,在void FunA()到void FunB()之前的所有函数,包括FunA在内,都采用6级的优化,而从FunB开始直到之后,只要没碰上#pragma OPTIMIZE,都采用9级优化了。 OPTIMIZE还可以多一个参数,就是speed和size, 用法: #pragma OPTIMIZE(9,speed)或#pragma OPTIMIZE(5,size) 对应的就是9...
2、针对某段代码(局部优化)pragma OPTIMIZE(x) x就是你希望的优化级别 举例如下:pragma OPTIMIZE(6)void FunA(){ } ...pragma OPTIMIZE(9)void FunB(){ } 上面的意思就是说,在void FunA()到void FunB()之前的所有函数,包括FunA在内,都采用6级的优化,而从FunB开始直到之后,只要没碰...
1、常数折叠:只要有可能,编译器就执⾏将表达式化为常数数字的计算,其中包括运⾏地址的计算。2、简单访问优化:对8051系统的内部数据和位地址进⾏访问优化。3、跳转优化:编译器总是将跳转延⾄最终⽬标上,因此跳转到跳转之间的命令被删除。1级优化:1、死码消除:⽆⽤的代码段被消除。2、跳转否决:...
void FunB() { } 上面的意思就是说,在void FunA()到void FunB()之前的所有函数,包括FunA在内, 都采用6级的优化,而从FunB开始直到之后,只要没碰上#pragma OPTIMIZE,都采 用9级优化了。 OPTIMIZE还可以多一个参数,就是speed和size, 用法:#pragma OPTIMIZE(9,speed)或#pragma OPTIMIZE(5,size) 对应的就...
#pragma OPTIMIZE(x) x就是你希望的优化级别,一般应用如下: #pragma OPTIMIZE(6) void FunA() { } ... ... #pragma OPTIMIZE(9) void FunB() { } 上面的意思就是说,在void FunA()到void FunB()之前的所有函数,包括FunA在内,都采用6级的优化,而从FunB开始直到之后,只要没碰上#pragma OPTIMIZE,都...
在KEIL手册中有介绍这个功能:#pragmaOPTIMIZE(x)x就是你希望的优化级别,一般应用如下:#pragmaOPTIMIZE(6)voidFunA()#pragmaOPTIMIZE(9)voidFunB()上面的意思就是说,在voidFunA()到voidFunB()之前的所有函数,包括FunA在内,都采用6级的优化,而从FunB开始直到之后,只要没碰上#pragmaOPTIMIZE,都采用9级优化了。
#pragma optimize=none /* Selection bwtween none, low, medium, and high */ int OpExampleUsed() {/* Do something here. */ } 3. Keil: Keil下的局部优化指令的用法如下 #pragma -Otime int SmallAndUsedOften() {/* Do something here. */ ...
1. 主程序调用该函数时禁止中断 , 可以在该函数被调用时用 #pragma disable 语句来实现禁止中断的目的...
之前提到过一个编译选项:Optimize for time,这个会影响float变量的存储大小,其实实测是不会影响,依然是4字节 且看测试的截图:stm32F103+keil5.20+ac5 测试代码: #pragma pack (4) /*指定按4字节对齐方式*/ uint8_t cnt = 3; float f_var = 5.0f; ...
#pragma OPTIMIZE(x) x就是你希望的优化级别,一般应用如下: #pragma OPTIMIZE(6) void FunA() { } ... ... #pragma OPTIMIZE(9) void FunB() { } 上面的意思就是说,在void FunA()到void FunB()之前的所有函数,包括FunA在内,都采用6级的优化,而从FunB开始直到之后,只要没碰上#pragma OPTIMIZE,都...