141
141
#define SPIFFS_OBJ_ID_DELETED ((spiffs_obj_id)0)
142
142
#define SPIFFS_OBJ_ID_FREE ((spiffs_obj_id)-1)
143
143
144
+
145
+
146
+ #if defined(__GNUC__ ) || defined(__clang__ )
147
+ /* For GCC and clang */
148
+ #define SPIFFS_PACKED __attribute__((packed))
149
+ #elif defined(__ICCARM__ ) || defined(__CC_ARM )
150
+ /* For IAR ARM and Keil MDK-ARM compilers */
151
+ #define SPIFFS_PACKED
152
+
153
+ #else
154
+ /* Unknown compiler */
155
+ #define SPIFFS_PACKED
156
+ #endif
157
+
158
+
159
+
144
160
#if SPIFFS_USE_MAGIC
145
161
#if !SPIFFS_USE_MAGIC_LENGTH
146
162
#define SPIFFS_MAGIC (fs , bix ) \
@@ -464,7 +480,7 @@ typedef struct {
464
480
// page header, part of each page except object lookup pages
465
481
// NB: this is always aligned when the data page is an object index,
466
482
// as in this case struct spiffs_page_object_ix is used
467
- typedef struct __attribute(( packed )) {
483
+ typedef struct SPIFFS_PACKED {
468
484
// object id
469
485
spiffs_obj_id obj_id ;
470
486
// object span index
@@ -474,7 +490,7 @@ typedef struct __attribute(( packed )) {
474
490
} spiffs_page_header ;
475
491
476
492
// object index header page header
477
- typedef struct __attribute(( packed ))
493
+ typedef struct SPIFFS_PACKED
478
494
#if SPIFFS_ALIGNED_OBJECT_INDEX_TABLES
479
495
__attribute(( aligned (sizeof (spiffs_page_ix )) ))
480
496
#endif
@@ -496,7 +512,7 @@ typedef struct __attribute(( packed ))
496
512
} spiffs_page_object_ix_header ;
497
513
498
514
// object index page header
499
- typedef struct __attribute(( packed )) {
515
+ typedef struct SPIFFS_PACKED {
500
516
spiffs_page_header p_hdr ;
501
517
u8_t _align [4 - ((sizeof (spiffs_page_header )& 3 )== 0 ? 4 : (sizeof (spiffs_page_header )& 3 ))];
502
518
} spiffs_page_object_ix ;
0 commit comments