【发布时间】:2015-12-17 13:42:48
【问题描述】:
假设我在另一个我无法更改的库中有以下代码:
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;之前,有没有人知道一个好的解决方案?
【问题讨论】:
-
你可以使用宏吗?
-
是的。不知道我会称之为“好”!
-
也许是this solution。
-
"
const PinName PIN_SD_MISO = p2;" 这是正确的做法。