Silence -Wunused-but-set-variable error with clang
[babeltrace.git] / src / common / macros.h
index 9014afc2c637d1b1df6eb31764c4815074ae03c3..6a3e061d5f17464222d85701e96a0cbf6e871121 100644 (file)
 extern "C" {
 #endif
 
+#ifdef __cplusplus
+#define BT_EXTERN_C extern "C"
+#else
+#define BT_EXTERN_C
+#endif
+
 #define bt_max_t(type, a, b)   \
        ((type) (a) > (type) (b) ? (type) (a) : (type) (b))
 
@@ -43,7 +49,7 @@ extern "C" {
 
 #define BT_MOVE_REF(ref)               \
        ({                              \
-               typeof(ref) _ref = ref; \
+               __typeof__(ref) _ref = ref;     \
                ref = NULL;             \
                _ref;                   \
        })
@@ -75,6 +81,17 @@ extern "C" {
        ((void) sizeof((void) (_expr1), (void) (_expr2),                \
                (void) (_expr3), (void) (_expr4), (void) (_expr5), 0))
 
+#if defined __clang__
+#  if __has_warning("-Wunused-but-set-variable")
+#    define BT_DIAG_IGNORE_UNUSED_BUT_SET_VARIABLE \
+       _Pragma("GCC diagnostic ignored \"-Wunused-but-set-variable\"")
+#  endif
+#endif
+
+#if !defined BT_DIAG_IGNORE_UNUSED_BUT_SET_VARIABLE
+#  define BT_DIAG_IGNORE_UNUSED_BUT_SET_VARIABLE
+#endif
+
 #ifdef __cplusplus
 }
 #endif
This page took 0.024277 seconds and 4 git commands to generate.