不知道大叔说的keil上的at问题是什么,是mdk不支持at关键字么?
因为我的项目是keil arm,keil uv4 mdk,iar,tasking 四个编译器都可以编译过并能执行,BCB等编译器可以编译过的。
下面从俺项目里面的头文件删除了不少东西后,修改而来,删了不少东西,但是at的都留着。
#if defined ( __CC_ARM ) /*MDK*/
#define atloc(v) __attribute__((at(v)))
#define __at(v)
#elif defined ( __ICCARM__ )
#define __ASM __asm
#define __INLINE inline
#define __RAM // __ramfunc
#define IntCallOnly
#define __at(v)
#define at(v) _Pragma("location=##v##")
#elif defined ( __GNUC__ )
#elif defined ( __TASKING__ )
#define __packed __unaligned
#define atloc(v) //Task 使用和keil3相同的__at()
#elif defined ( __KEIL__ )
#define __ASM __asm
#define __INLINE extern __inline
#define atloc(v)
#elif __BCPLUSPLUS__
#define __ram
#else
#define atloc(v)
#define __packed
#define __ram
#endif
用的时候典型如下:
atloc(0x80002000)
char unsigned const A[22] __at(0x80002000)=
{
0x00,
0x01,
};
|