https://gcc.gnu.org/bugzilla/show_bug.cgi?id=48839
--- Comment #13 from Andrew Pinski <pinskia at gcc dot gnu.org> --- Note C23 has the following under "4. Conformance": The implementation shall not successfully translate a preprocessing translation unit containing a #error preprocessing directive unless it is part of a group skipped by conditional inclusion. GCC does error out when preprocessing seperately from compiling but when doing a combined, GCC does "successfully" translate the preprocessing translation but does not finish compiling though. But maybe that is still valid.