diff --git a/assert/assert.h b/assert/assert.h index 72209bc5e7..6edcb01d0a 100644 --- a/assert/assert.h +++ b/assert/assert.h @@ -86,10 +86,18 @@ __END_DECLS parentheses around EXPR. Otherwise, those added parentheses would suppress warnings we'd expect to be detected by gcc's -Wparentheses. */ # if defined __cplusplus +# if __has_builtin(__builtin_FILE) +# define __ASSERT_FILE __builtin_FILE() +# define __ASSERT_LINE __builtin_LINE() +# else +# define __ASSERT_FILE __FILE__ +# define __ASSERT_LINE __LINE__ +# endif # define assert(expr) \ (static_cast (expr) \ ? void (0) \ - : __assert_fail (#expr, __FILE__, __LINE__, __ASSERT_FUNCTION)) + : __assert_fail (#expr, __ASSERT_FILE, __ASSERT_LINE, \ + __ASSERT_FUNCTION)) # elif !defined __GNUC__ || defined __STRICT_ANSI__ # define assert(expr) \ ((expr) \