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

最近有项目用到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文件中定义。

    原文作者:字由人
    原文地址: https://www.jianshu.com/p/4d2f19d68a2e
    本文转自网络文章,转载此文章仅为分享知识,如有侵权,请联系博主进行删除。
点赞