我正在使用这些代码从uart接收字符串,然后将其与此枚举匹配,然后将它们放在开关盒上。

char temp[3],rx_buf[100];
enum form {
GGA = 1,
GSA
};
enum form gnssform ;

sprintf(temp,"%c%c%c",rx_buf[3],rx_buf[4],rx_buf[5]);
gnssform=temp;


我不明白我们可以直接使用示例:

gnssform=GSA;


并没有错误,但这:

gnssform=temp;


不要编译。请告诉我执行此操作的可能方法???,因为此示例,我相信这是必须的。
错误是:

类型“ char *”的值不能分配给“枚举形式”类型的实体

请不要告诉我使用if-else,因为我讨厌这样。

最后我用了

if(rx_buf[3]=='G'&&rx_buf[4]=='G'&&rx_buf[5]=='A')gnssform=GGA;
else if(rx_buf[3]=='G'&&rx_buf[4]=='S'&&rx_buf[5]=='A')gnssform=GSA;

最佳答案

GSAenum form的常数。

temp是指向三个字母“ GSA”的字符指针。

它们不是一回事,您不能直接分配它们。

09-05 22:41