diff --git a/src/include/lwip/arch.h b/src/include/lwip/arch.h index 690559a0..2289c782 100644 --- a/src/include/lwip/arch.h +++ b/src/include/lwip/arch.h @@ -209,54 +209,58 @@ extern "C" { #endif /** Packed structs support. - * Placed BEFORE declaration of a packed struct. \n - * For examples of packed struct declarations, see include/lwip/prot/ subfolder. \n - * Porting to GCC/clang: Nothing to do. + * Placed BEFORE declaration of a packed struct.\n + * For examples of packed struct declarations, see include/lwip/prot/ subfolder.\n + * A port to GCC/clang is included in lwIP, if you use these compilers there is nothing to do here. */ #ifndef PACK_STRUCT_BEGIN #define PACK_STRUCT_BEGIN #endif /* PACK_STRUCT_BEGIN */ /** Packed structs support. - * Placed AFTER declaration of a packed struct. \n - * For examples of packed struct declarations, see include/lwip/prot/ subfolder. \n - * Porting to GCC/clang: Nothing to do. + * Placed AFTER declaration of a packed struct.\n + * For examples of packed struct declarations, see include/lwip/prot/ subfolder.\n + * A port to GCC/clang is included in lwIP, if you use these compilers there is nothing to do here. */ #ifndef PACK_STRUCT_END #define PACK_STRUCT_END #endif /* PACK_STRUCT_END */ /** Packed structs support. - * Placed between end of declaration of a packed struct and trailing semicolon. \n - * For examples of packed struct declarations, see include/lwip/prot/ subfolder. \n - * Porting to GCC/clang: \#define PACK_STRUCT_STRUCT \_\_attribute\_\_((packed)) + * Placed between end of declaration of a packed struct and trailing semicolon.\n + * For examples of packed struct declarations, see include/lwip/prot/ subfolder.\n + * A port to GCC/clang is included in lwIP, if you use these compilers there is nothing to do here. */ #ifndef PACK_STRUCT_STRUCT +#if defined(__GNUC__) || defined(__clang__) +#define PACK_STRUCT_STRUCT __attribute__((packed)) +#else #define PACK_STRUCT_STRUCT +#endif #endif /* PACK_STRUCT_STRUCT */ /** Packed structs support. - * Wraps u32_t and u16_t members. \n - * For examples of packed struct declarations, see include/lwip/prot/ subfolder. \n - * Porting to GCC/clang: Nothing to do. + * Wraps u32_t and u16_t members.\n + * For examples of packed struct declarations, see include/lwip/prot/ subfolder.\n + * A port to GCC/clang is included in lwIP, if you use these compilers there is nothing to do here. */ #ifndef PACK_STRUCT_FIELD #define PACK_STRUCT_FIELD(x) x #endif /* PACK_STRUCT_FIELD */ /** Packed structs support. - * Wraps u8_t members, where some compilers warn that packing is not necessary. \n - * For examples of packed struct declarations, see include/lwip/prot/ subfolder. \n - * Porting to GCC/clang: Nothing to do. + * Wraps u8_t members, where some compilers warn that packing is not necessary.\n + * For examples of packed struct declarations, see include/lwip/prot/ subfolder.\n + * A port to GCC/clang is included in lwIP, if you use these compilers there is nothing to do here. */ #ifndef PACK_STRUCT_FLD_8 #define PACK_STRUCT_FLD_8(x) PACK_STRUCT_FIELD(x) #endif /* PACK_STRUCT_FLD_8 */ /** Packed structs support. - * Wraps members that are packed structs themselves, where some compilers warn that packing is not necessary. \n - * For examples of packed struct declarations, see include/lwip/prot/ subfolder. \n - * Porting to GCC/clang: Nothing to do. + * Wraps members that are packed structs themselves, where some compilers warn that packing is not necessary.\n + * For examples of packed struct declarations, see include/lwip/prot/ subfolder.\n + * A port to GCC/clang is included in lwIP, if you use these compilers there is nothing to do here. */ #ifndef PACK_STRUCT_FLD_S #define PACK_STRUCT_FLD_S(x) PACK_STRUCT_FIELD(x)