preprocessor error directive --> #error 指令

论坛 期权论坛 编程之家     
选择匿名的用户   2021-5-28 19:01   18   0

It's a preprocessor directive that is used (for example) when you expect one of several possible -D symbols to be defined, but none is.

#if defined(BUILD_TYPE_NORMAL)
# define DEBUG(x) do {;} while (0) /* paranoid-style null code */
#elif defined(BUILD_TYPE_DEBUG)
# define DEBUG(x) _debug_trace x /* e.g. DEBUG((_debug_trace args)) */
#else
# error "Please specify build type in the Makefile"
#endif

When the preprocessor hits the #error directive, it will report the string as an error message and halt compilation; what exactly the error message looks like depends on the compiler.


A preprocessor error directive causes the preprocessor togenerate an error message and causes the compilation to fail.

A #error directive has the form:

             .--------------------.
             V                    |
>>-#--error----preprocessor_token-+----------------------------><
 
 

The argument preprocessor_token is not subject to macro expansion.

The #error directive is often used in the#else portion of a#if-#elif-#elseconstruct, as a safety check during compilation. For example,#error directives in the source file can prevent codegeneration if a section of the program is reached that should bebypassed.

For example, the directive

#define BUFFER_SIZE 255
 
#if BUFFER_SIZE < 256
#error "BUFFER_SIZE is too small."
#endif

generates the error message:

BUFFER_SIZE is too small.



#error

#error "This code should not compile"
The #error macro allows you to make compilation fail and issue a statement that will appear in the list of compilation errors. It is most useful when combined with #if/#elif/#else to fail compilation if some condition is not true. For example:
#ifndef __unix__ // __unix__ is typically defined when targetting Unix 
#error "Only Unix is supported"
#endif

分享到 :
0 人收藏
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

积分:3875789
帖子:775174
精华:0
期权论坛 期权论坛
发布
内容

下载期权论坛手机APP