...
However, the C Standard enumerates specific exceptions in which the behavior of accessing an object or function expanded to be a standard library macro definition is undefined. The macros are:
assert | errno | math_errhandling | setjmp |
va_start | va_arg | va_copy | va_end |
These cases are recorded in Annex J, subclause J.2, items 110, 114, 122, 124, and 138. Programmers should never attempt to access anything underlying any of these macros.
...