C99 strictness for the global sigcode's type.

"Accessing or modifying shared objects in signal handlers can result in
race conditions that can leave data in an inconsistent state. The two
exceptions [. . .] are the ability to read and write to lock-free atomic objects or to read from or write to variables of type volatile sig_atomic_t. Accessing any other type of object from a signal handler is undefined behavior [. . .]"[1]

[1]:
https://www.securecoding.cert.org/confluence/display/seccode/SIG31-C.+Do+not+access+shared+objects+in+signal+handlers