* Copyright (C) 2017 Jérémie Galarneau
*/
-/* '## __VA_ARGS__' is a gcc'ism. C99 doesn't allow the token pasting
- and requires the caller to add the final comma if they've ommitted
- the optional arguments */
-#ifdef __GNUC__
-# define ok(e, test, ...) ((e) ? \
- _gen_result(1, __func__, __FILE__, __LINE__, \
- test, ## __VA_ARGS__) : \
- _gen_result(0, __func__, __FILE__, __LINE__, \
- test, ## __VA_ARGS__))
-
-# define ok1(e) ((e) ? \
- _gen_result(1, __func__, __FILE__, __LINE__, "%s", #e) : \
- _gen_result(0, __func__, __FILE__, __LINE__, "%s", #e))
-
-# define pass(test, ...) ok(1, test, ## __VA_ARGS__);
-# define fail(test, ...) ok(0, test, ## __VA_ARGS__);
+#ifdef __cplusplus
+extern "C" {
+#endif
-# define skip_start(test, n, fmt, ...) \
- do { \
- if((test)) { \
- skip(n, fmt, ## __VA_ARGS__); \
- continue; \
- }
-#elif __STDC_VERSION__ >= 199901L /* __GNUC__ */
# define ok(e, ...) ((e) ? \
_gen_result(1, __func__, __FILE__, __LINE__, \
__VA_ARGS__) : \
_gen_result(1, __func__, __FILE__, __LINE__, "%s", #e) : \
_gen_result(0, __func__, __FILE__, __LINE__, "%s", #e))
-# define pass(...) ok(1, __VA_ARGS__);
-# define fail(...) ok(0, __VA_ARGS__);
+# define pass(...) ok(1, __VA_ARGS__)
+# define fail(...) ok(0, __VA_ARGS__)
# define skip_start(test, n, ...) \
do { \
skip(n, __VA_ARGS__); \
continue; \
}
-#else /* __STDC_VERSION__ */
-# error "Needs gcc or C99 compiler for variadic macros."
-#endif /* __STDC_VERSION__ */
#define skip_end() } while(0);
__attribute__((format(TAP_PRINTF_FORMAT, 1, 2)))
unsigned int rdiag(const char *fmt, ...);
unsigned int rdiag_end(void);
+
+#ifdef __cplusplus
+}
+#endif