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

问题描述 投票:0回答:1

我正在尝试采用某种简单的方法来定义我使用的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

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

//#define MCU_IN_USE         ESP32_S3_MINI_1
#define MCU_IN_USE         ESP32_S3_WROOM

我计划取消注释我使用的一个并注释另一个,但问题是,无论取消注释哪个定义,我总是在

#if
语句中获得第一个选项,即使我正在使用
#elif
定义:

什么原因导致这个问题?

c-preprocessor definition using-directives
1个回答
0
投票

所以基本上我将

MCU_IN_USE
定义为
ESP32_S3_WROOM
,并且
ESP32_S3_WROOM
定义为空,它不是常量或字符串或任何东西,它只是一个空定义。我不知道为什么我这样做,因为这是一个非常基本的错误,但通过包含这个来修复它

#define ESP32_S3_MINI_1     0
#define ESP32_S3_MINI_1     1
© www.soinside.com 2019 - 2024. All rights reserved.