SLAA534A June 2013 – June 2020
The type and size of jmp_buf are defined in setjmp.h
With the small code and small data model combination, the size and alignment of jmp_buf is the same as an array of 9 "int"s (that is, 16 bits * 9). For all other code and data model combinations, the size and alignment of jmp_buf the same as an array of is 9 "long"s (that is, 32 bits * 9).
The setjmp and longjmp functions must be not be inlined because jmp_buf is opaque. That is, the fields of the structure are not defined by the standard, so the internals of the structure are not accessible except by setjmp() and longjmp(), which must be out-of-line calls from the same library. These functions cannot be implemented as macros.