不同编译器下,定义一个地址按x字节对齐的数组

以前一直用MDK,用__align(4)就可以定义一个首地址被4整除、地址按4字节对齐的数组,但今天用IAR发现这么写编译报错。

搜了一下才发现,原来不同的编译器,需要用不同的表达方式:

#if defined   (__CC_ARM) /*!< ARM Compiler */ //MDK
    __align(4)
    uint16_t data[40];

#elif defined ( __ICCARM__ ) /*!< IAR Compiler */ 
    #pragma data_alignment=4 
    uint16_t data[40];

#elif defined (__GNUC__) /*!< GNU Compiler */ 
    uint16_t data[40];             __attribute__ ((aligned (4))); 

#elif defined  (__TASKING__) /*!< TASKING Compiler */ 
    __align(4) 
    uint16_t data[40];

#endif /* __CC_ARM */

 

posted @ 2019-04-03 17:48  花火·  阅读(1504)  评论(0编辑  收藏  举报