美文网首页大虾带着小虾米程序人生程序员
_Pragma 之location字段——(IAR使用基础篇)

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

作者: 天亮了zlm | 来源:发表于2019-04-02 08:54 被阅读40次

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

相关文章

网友评论

    本文标题:_Pragma 之location字段——(IAR使用基础篇)

    本文链接:https://www.haomeiwen.com/subject/pgsbbqtx.html