keil 里面的枚举变量被装换为uint8_t

在调试lorawan 代码时,发现枚举变量被强行转换成了uint8_t 类型。

typedef enum
{
    MCU_PINS,
    IOE_PINS,
    // Not connected
    NC = (int)0xFFFFFFFF
}PinNames;

typedef struct
{
    PinNames  pin;
    uint16_t pinIndex;
    void *port;
    uint16_t portIndex;
    PinTypes pull;
    void* Context;
    GpioIrqHandler* IrqHandler;
}Gpio_t;
 obj->pin = NC;
//此时 obj->pin 本应该等于 0xFFFFFFFF ,但是在调试的时候发现它等于0xFF


这个需要在编译的时候强制将枚举变量编译成int 类型。

posted @ 2022-10-22 16:43  SpinJump  阅读(304)  评论(0编辑  收藏  举报