大虾带着小虾米程序人生程序员

_Pragma 之location字段——(IAR使用基础篇)

2019-04-02  本文已影响40人  天亮了zlm

最近有项目用到IAR开发环境,之前用的是KEIL,许多针对编译器的指令不是很清楚。

今天我们就来学习编译指示指令:location

代码如下:

      #define USB_GLOBAL _Pragma("location = \"m_usb_global\"")
      #define USB_BDT _Pragma("location = \"m_usb_bdt\"")

这段代码的作用是,定义一个宏,用该宏定义的变量位于“m_usb_global”节中。

USB_GLOBAL static usb_device_struct_t s_UsbDevice[USB_DEVICE_CONFIG_NUM];/*s_UsbDevice is located in section m_usb_global*/

上面的代码实现定义数组变量s_UsbDevice,并且该数组变量位于“m_usb_global” 节。

其实还有等效的代码:

#pragma location = "m_usb_global"
usb_device_struct_t s_UsbDevice[USB_DEVICE_CONFIG_NUM];/*s_UsbDevice is located in section m_usb_global*/

前一种方法一劳永逸,下次再定义变量位于指定的section时,直接用宏定义就可以了,而第二种每次都需要用伪指令指定某一个section。

这些section都是在.icf文件中定义。

上一篇 下一篇

猜你喜欢

热点阅读