使用环境
- 操作系统版本:windows11
- 操作系统平台(x86/x64):x64
- VsCode 版本:1.98.0
- EIDE 插件版本:3.21.1
- C/C++ 插件版本:1.23.6
- 何种编译器(keil_c51/sdcc/armcc5/armgcc/...):gcc_arm
- 编译器版本(非编译问题可忽略):10.2.1
描述问题
写了一个 stm32f103c8t6 的 stdio 初始化库,可以通过预处理宏定义来改变 prinf 重定向的串口
相关代码如下:
#ifndef STDIO_USART_CHANNEL
    #error  "[Stdio_Init] STDIO_USART_CHANNEL must be defined! Please define it in global configuration."
#elif  (STDIO_USART_CHANNEL + 0 == 0)
        #error "[Stdio_Init] STDIO_USART_CHANNEL is defined but empty! Please assign a valid value (1/2/3)."
#elif  (STDIO_USART_CHANNEL != 1 && \
        STDIO_USART_CHANNEL != 2 && \
        STDIO_USART_CHANNEL != 3  )
        #error "[Stdio_Init] STDIO_USART_CHANNEL must be a valid USART peripheral instance (USART1/USART2/USART3)! Please modify it in global configuration."
#endif
但在预处理宏定义中未赋值 STDIO_USART_CHANNEL 时,编译仍可正常通过。
屏幕截图


期望现象
- 如果没有定义 STDIO_USART_CHANNEL将会报错"[Stdio_Init] STDIO_USART_CHANNEL must be defined! Please define it in global configuration."
 
- 如果定义 STDIO_USART_CHANNEL但未赋值将会报错"[Stdio_Init] STDIO_USART_CHANNEL is defined but empty! Please assign a valid value (1/2/3)."
 3.如果STDIO_USART_CHANNEL未指定可用串口会报错"[Stdio_Init] STDIO_USART_CHANNEL must be a valid USART peripheral instance (USART1/USART2/USART3)! Please modify it in global configuration."