mirror of https://github.com/ARMmbed/mbed-os.git
Fix C++11 build with Arm Compiler 6
Currently there are two issues which prevent building Mbed OS with -std=gnu++11 when using Arm Compiler 6: * NanostackRfPhys2lp.cpp contains a narrowing conversion in a braced initializer list * ns_types.h includes <stdalign.h> which Arm Compiler 6 currently does not provide This patch fixes both issues. The first one is fixed by changing the underlying type of the corresponding enumeration when the code is compiled as C++11. The second issue is worked around by avoiding the use of <stdalign.h> header for Arm Compiler versions prior to 6.12.pull/8843/head
parent
60b5547b65
commit
5c351dc6ae
|
@ -301,7 +301,11 @@ typedef enum {
|
||||||
S2LP_STATE_SYNTH_SETUP = 0x50
|
S2LP_STATE_SYNTH_SETUP = 0x50
|
||||||
} s2lp_states_e;
|
} s2lp_states_e;
|
||||||
|
|
||||||
|
#if defined __cplusplus && __cplusplus >= 201103
|
||||||
|
typedef enum : uint8_t {
|
||||||
|
#else
|
||||||
typedef enum {
|
typedef enum {
|
||||||
|
#endif
|
||||||
S2LP_CMD_TX = 0x60,
|
S2LP_CMD_TX = 0x60,
|
||||||
S2LP_CMD_RX,
|
S2LP_CMD_RX,
|
||||||
S2LP_CMD_READY,
|
S2LP_CMD_READY,
|
||||||
|
|
|
@ -121,7 +121,15 @@ typedef int_fast32_t int_fast24_t;
|
||||||
#define alignas(n) __align(n)
|
#define alignas(n) __align(n)
|
||||||
#define __alignas_is_defined 1
|
#define __alignas_is_defined 1
|
||||||
#elif (defined __STDC_VERSION__ && __STDC_VERSION__ >= 201112L) || (defined __cplusplus && __cplusplus >= 201103L)
|
#elif (defined __STDC_VERSION__ && __STDC_VERSION__ >= 201112L) || (defined __cplusplus && __cplusplus >= 201103L)
|
||||||
#include <stdalign.h>
|
# if defined __ARMCC_VERSION && __ARMCC_VERSION < 6120000
|
||||||
|
/* Workaround for Arm Compiler versions prior to 6.12 */
|
||||||
|
# if !defined __cplusplus
|
||||||
|
# define alignas _Alignas
|
||||||
|
# endif
|
||||||
|
# define __alignas_is_defined 1
|
||||||
|
# else
|
||||||
|
# include <stdalign.h>
|
||||||
|
# endif
|
||||||
#elif defined __GNUC__
|
#elif defined __GNUC__
|
||||||
#define alignas(n) __attribute__((__aligned__(n)))
|
#define alignas(n) __attribute__((__aligned__(n)))
|
||||||
#define __alignas_is_defined 1
|
#define __alignas_is_defined 1
|
||||||
|
|
Loading…
Reference in New Issue