Hola,
Las instrucciones del pre-procesador #error y #pragma son
dependientes del compilador que estés usando. Y sirven para indicarle al compilador ciertas opciones que no se aplican a todo el programa. Y varían de compilador a compilador, no solo para generar warnings, sirve para controlar ciertas variables internas del compilador, como el caso de 'warning: unused vars', etc.
Por ejemplo, para deshabilitar cierto pragma en Borland
#pragma warning(disable: 1234)
http://en.wikipedia.org/wiki/C_preprocessor
Saludos,