本文参考:https://blog.csdn.net/sunheshan/article/details/45531953
1.#pragma message("")
IAR编译到此处,在Build窗口打印出文本信息
2.#pragma error ""
IAR编译到此处,在Build窗口打印出文本信息并报错
3.#pragma inline [=force|nerver]
用这个指令是建议编译将这条指令后面的函数内联到调用它的函数的函数体中
当#pragma inline = forced ,则强制让编译器对函数内联,如果内联不成功,会发出警告消息
4. #pragma location = {address|register|NAME}
4.1 #pragma location = address 等价于@address,其用处是将变量指到绝对的地址中,变量必须定义为__no_init
例如:
#pragma LOCATION(flashBuf, 0x1B000); //将flashBuf 放到0x1B000中
#pragma NOINIT(flashBuf);
static char flashBuf[4096]; 4.2 #pragma location = register 等价于@register,定义的变量需要声明为__no_init
4.3 #pragma location = NAME 等价于@section,其中NAME是section的模型。作用是把变量放在某个section中
5. __no_init
IAR编译下,正常未初始化的变量都会被初始化为0,使用该关键字,编译器会跳过初始化,不对变量进行初始化。该关键字可用于要保存某些RAM区域的值,软件复位后该区域不进行改变
6. __root
限定函数或变量就算没被调用也不会被初始化