summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--include/openflow/openflow-common.h7
-rw-r--r--include/openvswitch/compiler.h6
2 files changed, 10 insertions, 3 deletions
diff --git a/include/openflow/openflow-common.h b/include/openflow/openflow-common.h
index d66551997..ea6bb41bc 100644
--- a/include/openflow/openflow-common.h
+++ b/include/openflow/openflow-common.h
@@ -59,9 +59,12 @@
#define OFP_ASSERT(EXPR) \
extern int (*build_assert(void))[ sizeof(struct { \
unsigned int build_assert_failed : (EXPR) ? 1 : -1; })]
-#else /* __cplusplus */
+#elif __cplusplus >= 201103L
#define OFP_ASSERT(EXPR) static_assert(EXPR, "assertion failed")
-#endif /* __cplusplus */
+#else /* __cplusplus < 201103L */
+#include <boost/static_assert.hpp>
+#define OFP_ASSERT BOOST_STATIC_ASSERT
+#endif /* __cplusplus < 201103L */
/* Version number:
* Non-experimental versions released: 0x01 0x02
diff --git a/include/openvswitch/compiler.h b/include/openvswitch/compiler.h
index 0076ad763..c7cb9308d 100644
--- a/include/openvswitch/compiler.h
+++ b/include/openvswitch/compiler.h
@@ -243,9 +243,13 @@
#ifdef __CHECKER__
#define BUILD_ASSERT(EXPR) ((void) 0)
#define BUILD_ASSERT_DECL(EXPR) extern int (*build_assert(void))[1]
-#elif defined(__cplusplus)
+#elif defined(__cplusplus) && __cplusplus >= 201103L
#define BUILD_ASSERT(EXPR) static_assert(EXPR, "assertion failed")
#define BUILD_ASSERT_DECL(EXPR) static_assert(EXPR, "assertion failed")
+#elif defined(__cplusplus) && __cplusplus < 201103L
+#include <boost/static_assert.hpp>
+#define BUILD_ASSERT BOOST_STATIC_ASSERT
+#define BUILD_ASSERT_DECL BOOST_STATIC_ASSERT
#elif (__GNUC__ * 256 + __GNUC_MINOR__ >= 0x403 \
|| __has_extension(c_static_assert))
#define BUILD_ASSERT_DECL(EXPR) _Static_assert(EXPR, #EXPR)