Content originally posted in LPCWare by mdkendall on Mon Mar 12 14:53:43 MST 2012
#error is not supposed to "pass compilation", it is supposed to generate an error; that is the whole point of it. You would use it to trap compile-time problems such as not having defined a required macro, or having defined inconsistent or unsupported values for macros.