假设我有下面的代码 * 在另一个库中,我不能改变 *:
typedef enum {
p0 = 0,
p1 = 1,
p2 = 2,
p3 = 3,
p4 = 4,
p5 = 5,
p6 = 6,
...
} PinName;
我想添加一些额外的别名,如下所示(* 不使用const PinName PIN_...
*):
enum class : PinName {
PIN_SD_MOSI = p0,
PIN_SD_MISO = p4,
PIN_SD_SCK = p2,
PIN_SD_CSN = p6,
};
但它不起作用。我得到以下错误:
error: underlying type 'PinName' of '<anonymous enum class>' must be an integral type
enum class : PinName {
^
我也试过使用enum class : int {
,但是别名从来不在作用域中--我怀疑我必须使用普通的enum
来代替。enum : int
编译,但是你不能将任何别名传递给接受PinName
的函数。
error: no matching function for call to 'foo(<anonymous enum>, <anonymous enum>)'
foo(PIN_SD_MISO, PIN_SD_MOSI);
^
(候选值为foo(PinName, PinName)
。)
在我给予使用const PinName PIN_SD_MISO = p2;
之前,有人想到一个好的解决方案吗?
2条答案
按热度按时间aurhwmvo1#
这是我在处理作用域枚举时得出的结果,有点笨拙:
然后像这样使用:
从Base枚举类继承
dced5bon2#
我会被击落,但为什么不只是使用宏?