无法在struct中访问枚举

时间:2017-03-31 16:34:08

标签: c struct enums

我有以下结构定义

标题文件:

struct SDK {
   enum {
       HEADER0 = 0,
       HEADER1,
       LINGO,
       COMMAND,
       LENGTH,
       ACK_CMD,
       ACK_STATUS
   }commandFormat;
}mySDK;

我希望像这样使用它:

的main.c

switch (rxData[mySDK.commandFormat.LINGO]) {
   default:
      break;
}

我收到错误:请求成员'LINGO'不是结构或联合

我知道我可能做了些蠢事,但我无法弄明白到底是什么。谢谢。

2 个答案:

答案 0 :(得分:1)

struct SDK {
   enum {
       HEADER0 = 0,
       HEADER1,
       LINGO,
       COMMAND,
       LENGTH,
       ACK_CMD,
       ACK_STATUS
   }commandFormat;
}mySDK;

创建整数常量

   HEADER0,
   HEADER1,
   LINGO,
   COMMAND,
   LENGTH,
   ACK_CMD,
   ACK_STATUS

全球范围内。

它还定义了

struct SDK {
   enum <anonymous> commandFormat;
};

调试器将commandFormat的值解释为上述整数常量之一, 它定义了一个名为mySDK的结构的实例。

mySDK.commandFormat是一个整数(枚举)。 将.应用于它是没有意义的。

答案 1 :(得分:0)

只需写下

switch (rxData[mySDK.commandFormat]) {

前提是对象commandFormat的数据成员mySDK已初始化,特别是LINGO

或写

switch (rxData[INGO]) {