Quiz: is it possible that some standard conforming compiler wouldn't complain on replacing a C keyword or a name token with an integer constant?
A good safety measure is to use uppercase case labels and convert lowercase input strings before processing.
The sos generated CPP code includes a check against redefining macros (e.g. NULL). To be effective the sos code should be included/inserted after all headers and other C preprocessor code. The check code (not shown in the example) will halt compilation with an error message.
To completely eliminate the "redefinition danger" use the "-s" option and generate a switch code skeleton.