The Keil compiler insists on having the IP address structure packed, but doing so causes problems with warnings being generated on other compilers. uip.h was therefore updated to just use the pack attribute when the Keil compiler is used.
diff --git a/Demo/Common/ethernet/FreeTCPIP/net/uip.h b/Demo/Common/ethernet/FreeTCPIP/net/uip.h
index 3cfad7b..3a0ed19 100644
--- a/Demo/Common/ethernet/FreeTCPIP/net/uip.h
+++ b/Demo/Common/ethernet/FreeTCPIP/net/uip.h
@@ -69,14 +69,16 @@
typedef uip_ip6addr_t uip_ipaddr_t;
#else /* UIP_CONF_IPV6 */
- #include "pack_struct_start.h"
- typedef union uip_ip4addr_t
- {
- u8_t u8[4]; /* Initializer, must come first!!! */
- u16_t u16[2];
- } uip_ip4addr_t;
- typedef uip_ip4addr_t uip_ipaddr_t
- #include "pack_struct_end.h"
+ #ifdef __CC_ARM
+ __packed /* The ARM compiler insists on this being packed, but with other compilers packing it generates a warning as it will be packed anyway. */
+ #endif
+
+ typedef union uip_ip4addr_t
+ {
+ u8_t u8[4]; /* Initializer, must come first!!! */
+ u16_t u16[2];
+ } uip_ip4addr_t;
+ typedef uip_ip4addr_t uip_ipaddr_t;
#endif /* UIP_CONF_IPV6 */
/*---------------------------------------------------------------------------*/