我在使以下条件编译工作时遇到困难:
enum { MIDI_USB_DEV_MCU_IDX, MIDI_WC_BLE_IDX, MIDI_CONN_1_IDX, MIDI_CONN_2_IDX,MIDI_IN_OUT_UARTS_NB
};
#define MIDI_UART_IDX_TO_USE_SYSEXS MIDI_WC_BLE_IDX
我用下面的代码来提醒我上面的定义不应该在Release模式下使用,但是编译器不会在下面的测试中发出警告。
#if MIDI_UART_IDX_TO_USE_SYSEXS != MIDI_USB_DEV_MCU_IDX
#warning MIDI_UART_IDX_TO_USE_SYSEXS must be MIDI_USB_DEV_MCU_IDX in RELEASE MODE
#endif
从我读到的内容来看,枚举被视为 Int,在我的源代码中使用枚举工作正常,但条件编译器测试失败。 任何帮助或提示将不胜感激 谢谢。
预编译阶段不存在枚举常量。你的条件表达式相当于
#if 0 != 0
使常量在
#if
表达式中发挥作用的唯一方法是定义宏常量。
#define MIDI_USB_DEV_MCU_IDX (0)
#define MIDI_WC_BLE_IDX (1)
#define MIDI_CONN_1_IDX (2)
#define MIDI_CONN_2_IDX (3)
#define MIDI_IN_OUT_UARTS_NB (4)