我定义了以下结构

头文件:

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”使用非结构体或联合体

我知道我可能正在做一些愚蠢的事情,但是我无法弄清楚到底是什么。谢谢。

最佳答案

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是整数(枚举)。
.应用于它没有任何意义。

09-16 06:46