It won't work with user code (unless the user defines the same variable).
Use a variable known to be defined by gcc on macs.
#define _XBT_LOGV_CTOR(cat) _XBT_LOG_CONCAT2(_XBT_LOGV(cat), __constructor__)
#define _XBT_LOG_CONCAT(x, y) x ## y
#define _XBT_LOG_CONCAT2(x, y) _XBT_LOG_CONCAT(x, y)
-/* Apparently, constructor priorities are not supported on Macs */
-#if APPLE
+/* Apparently, constructor priorities are not supported by gcc on Macs */
+#if __GNUC__ && __APPLE__
# define _XBT_LOGV_CTOR_ATTRIBUTE
#else
# define _XBT_LOGV_CTOR_ATTRIBUTE _XBT_GNUC_CONSTRUCTOR(600)
__attribute__((__format__ (__scanf__, format_idx, arg_idx)))
# define _XBT_GNUC_NORETURN __attribute__((__noreturn__))
# define _XBT_GNUC_UNUSED __attribute__((__unused__))
-/* Apparently, constructor priorities are not supported on Macs */
-# if APPLE
+/* Apparently, constructor priorities are not supported by gcc on Macs */
+# if __APPLE__
# define _XBT_GNUC_CONSTRUCTOR(prio) __attribute__((__constructor__))
# define _XBT_GNUC_DESTRUCTOR(prio) __attribute__((__destructor__))
# else