我正在尝试采用某种简单的方法来定义我使用的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
定义:
什么原因导致这个问题?
所以基本上我将
MCU_IN_USE
定义为 ESP32_S3_WROOM
,并且 ESP32_S3_WROOM
定义为空,它不是常量或字符串或任何东西,它只是一个空定义。我不知道为什么我这样做,因为这是一个非常基本的错误,但通过包含这个来修复它
#define ESP32_S3_MINI_1 0
#define ESP32_S3_MINI_1 1