以前一直用MDK,用__align(4)就可以定义一个首地址被4整除、地址按4字节对齐的数组,但今天用IAR发现这么写编译报错。
搜了一下才发现,原来不同的编译器,需要用不同的表达方式:
#if defined (__CC_ARM) /*!< ARM Compiler */ //MDK
__align()
uint16_t data[]; #elif defined ( __ICCARM__ ) /*!< IAR Compiler */
#pragma data_alignment=4
uint16_t data[]; #elif defined (__GNUC__) /*!< GNU Compiler */
uint16_t data[]; __attribute__ ((aligned ())); #elif defined (__TASKING__) /*!< TASKING Compiler */
__align()
uint16_t data[]; #endif /* __CC_ARM */