The #error directive
prints an implementation-dependent message including the tokens specified in the directive. The tokens are sequences of characters separated by spaces. For example,
#error 1 - Out of range error
contains six tokens. In one popular C++ compiler, for example, when a #error directive is processed, the tokens in the directive are displayed as an error message, preprocessing stops and the program does not compile.
The #pragma directive
causes an implementation-defined action. A pragma not recognized by the implementation is ignored. A particular C++ compiler, for example, might recognize pragmas that enable the programmer to take advantage of that compiler's specific capabilities. For more information on #error and #pragma, see the documentation for your C++ implementation.