#if 和 #elif 在 CPP 中无法按预期工作

#if and #elif doesn't work as intended in Cpp

提问人:Dominykas 提问时间:9/19/2023 最后编辑:πάντα ῥεῖDominykas 更新时间:9/19/2023 访问量:30

问:

我正在尝试使用某种简单的方法来定义我使用的 mcu,并且通过定义 mcu,应该包含不同的头文件。我尝试用 和指令来做:#if#elif

#include "Parameters.h"

#if MCU_IN_USE == ESP32_S3_MINI_1
   #include "ESP32_S3_MINI_1_PINOUT.h"
#elif MCU_IN_USE == ESP32_S3_WROOM
   #include "ESP32_S3_WROOM_PINOUT.h"
#endif

在文件中,我这样定义 MCU:Parameters.h

//#define MCU_IN_USE         ESP32_S3_MINI_1
#define MCU_IN_USE         ESP32_S3_WROOM

我计划取消注释我使用的那个并注释另一个,但问题是无论哪个定义是未注释的,即使我使用定义,我总是在语句中获得第一个选项:#if#elifenter image description here

是什么导致了这个问题?

使用指令 的 C-预处理器 定义

评论

1赞 Ted Lyngmo 9/19/2023
什么是和定义到什么?ESP32_S3_MINI_1ESP32_S3_WROOM
0赞 Dominykas 9/19/2023
修复了它。我不知道为什么,但我没有将它们定义为任何东西,所以基本上我定义了一个MCU_IN_USE到什么都没有。非常可耻的错误
1赞 Ted Lyngmo 9/19/2023
:-)可能发生在任何人身上!投票关闭为错别字。

答:

0赞 Dominykas 9/19/2023 #1

所以基本上我定义为什么都没有,它不是常量或字符串或任何东西,它只是一个空的定义。我不知道我为什么要这样做,因为它是超级基本的错误,但通过包含这个来修复它MCU_IN_USEESP32_S3_WROOMESP32_S3_WROOM

#define ESP32_S3_MINI_1     0
#define ESP32_S3_WROOM      1