preprocessor error directive --> #error 指令

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

正在文件夹 02_led_flow_register 中执行任务: "unify_builder -p "d:\project\stm32\02_led_flow_register\build\Target 1\builder.params" --rebuild" [ INFO ] start building at 2025-06-23 08:30:56 [ TOOL ] Product: ARM Compiler 5.06 [ INFO ] file statistics (rebuild mode) +---------+-----------+-----------+---------------+--------+ | C Files | Cpp Files | Asm Files | Lib/Obj Files | Totals | +---------+-----------+-----------+---------------+--------+ | 3 | 0 | 1 | 0 | 4 | +---------+-----------+-----------+---------------+--------+ [ INFO ] start compiling ... >> [ 25%] CC 'start/core_cm3.c' >> [ 50%] AS 'start/startup_stm32f10x_md.s' >> [ 75%] CC 'start/system_stm32f10x.c' ".\start\stm32f10x.h", line 95: Error: #35: #error directive: "Please select first the target STM32F10x device used in your application (in stm32f10x.h file)" #error "Please select first the target STM32F10x device used in your application (in stm32f10x.h file)" ^ .\start\system_stm32f10x.c: 0 warnings, 1 error ERROR compilation failed at : "d:\project\stm32\02_led_flow_register\start\system_stm32f10x.c", exit code: 1 command: "C:\Users\yang'mao'jin\.eide\tools\armcc_v5_cracked\bin\armcc.exe" -c --apcs=interwork -Istart -Iuser -I.cmsis/include -I"RTE/_Target 1" --cpu Cortex-M3 --li --c99 -O0 --split_sections --gnu --diag_suppress=1 --diag_suppress=1295 -g -o ".\build\Target 1\.obj\start\system_stm32f10x.o" --no_depend_system_headers --depend ".\build\Target 1\.obj\start\system_stm32f10x.d" .\start\system_stm32f10x.c ERROR build failed !, elapsed time 0:0:2 怎么解决
最新发布
06-24
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值