ВходНаше всё Теги codebook 无线电组件 Поиск Опросы Закон Четверг
18 июля
1435383 Топик полностью
LightElf (15.05.2024 15:42, просмотров: 67) ответил Vit на в 6-м (Clang). но опять же, оно при наличии атрибутов просто вредно.
Атрибуты менее портабельны, чем pragma. Но конечно лучше завести какой compiler.h и в него все костыли понасувать. 

В старой USB либе было такое:

#if defined(__C51__)
/* Keil 8051 compiler uses Big-endian */
#define PACKED_STRUCT_START()
#define PACKED_STRUCT_END()
#define FLASHCONST_START()
#define FLASHCONST_END()
#define FLASHCONST(type)           type code 
#define FARDATA_START()
#define FARDATA_END()
#define FARDATA(type)              type xdata 
#define UINT16_FROM_LE(x)          (((x)>>8) | ((x)<<8))
#define UINT16_TO_LE(x)            (((x)>>8) | ((x)<<8))
#define NULL                       0 
#elif defined(__ICC8051__)
/* IAR 8051 compiler uses Little Endian */ 
#define PACKED_STRUCT_START()      
#define PACKED_STRUCT_END()
#define FLASHCONST_START()
#define FLASHCONST_END()
#define FLASHCONST(type)           const __code type 
#define FARDATA_START()
#define FARDATA_END()
#define FARDATA(type)              __xdata type
#define UINT16_FROM_LE(x)          (x)
#define UINT16_TO_LE(x)            (x)
#elif defined(__ICCARM__)
/* IAR ARM compiler */
#define PACKED_STRUCT_START()      __packed
#define PACKED_STRUCT_END()        
#define FLASHCONST_START()
#define FLASHCONST_END()
#define FLASHCONST(type)           const type 
#define FARDATA_START()
#define FARDATA_END()
#define FARDATA(type)              type
#define UINT16_FROM_LE(x)          (x)
#define UINT16_TO_LE(x)            (x)
#else
#    error "Unknown compiler!"
#endif
Не надо делать мне как лучше, оставьте мне как хорошо