MDK KEIL笔记

1.编译器优化程序代码段

1
2
3
4
#pragma push
#pragma O0

#pragma pop

1.1.代码优化一: 系统设置优化等级为armcc -O1,如果此时想要一个函数不进行优化或者优化成其他级别,处理如下function2function3 而其他函数保持armcc优化等级

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
void function1(void){
... // 执行O1优化(来自armcc-O1)
}

#pragma push
#pragma O0
void function2(void){ // 不执行优化
...
}
#pragma pop

#pragma push
#pragma O3
void function3(void){ // 在O3条件下优化
...
}
#pragma pop

void function4(void){
... // 执行O1优化(来自armcc-O1)
}

1.2.代码优化二:系统设置优化等级为armcc -O1,但是部分代码想要设置 O3 优先级

1
2
3
4
5
6
7
8
9
10
11
12
void function1(void){
... // 执行O1优化(来自armcc-O1)
}

#pragma O3 //从该位置设置后,直到该文件结束
void function2(void){
... // 执行自己设置的 O3 编译优化
}

void function3(void){
... // 执行自己设置的 O3 编译优化
}

2.通过编译器设置字节对齐操作

有两种操作:
方法一:

1
pragma pack (n)

方法二:

1
pragma pack (n)