http://gcc.gnu.org/bugzilla/show_bug.cgi?id=54289
--- Comment #8 from Daniel Krügler <daniel.kruegler at googlemail dot com> 2012-08-16 19:54:10 UTC --- (In reply to comment #6) > I think standard of C std libs declares setjmp as a function. So, it should be > function. I'm not looking at any code, but C says: "The header <setjmp.h> defines the macro setjmp, [..]" And in C++ (quoting from C++11) [headers]: "Names which are defined as macros in C shall be defined as macros in the C++ standard library, even if C grants license for implementation as functions. [ Note: The names defined as macros in C include the following: assert, offsetof, setjmp, va_arg, va_end, and va_start. —end note ]" For this discussion it is completely irrelevant whether the macro expands to a function or something else.