typedef enum {
    IOTAG_PORT__A = (0),
    IOTAG_PORT__B,
    IOTAG_PORT__C,
    IOTAG_PORT__F,
    IOTAG_PORT__ITEMS
} iotagPort_e;

#if (IOTAG_PORT__F)    // IOTAG_PORT__F未define,默认为0
#    error "can you see me?"
#endif

比如上面的例子,错误信息是看不到的,因为IOTAG_PORT__F并未预定义,换句话说enum里面的常量你不能用预编译命令作为条件判断,这就很致命了。

反过来说,enum中的常量你不用于预编译条件判断中,那就自然是枚举变量更好些。

 

此外,enum是可以指定基础变量类型的:

typedef enum :uint8_t{ // 指定enum的基础类型是uint8_t
    IOTAG_PORT__A = (0),
    IOTAG_PORT__B,
    IOTAG_PORT__C,
    IOTAG_PORT__F,
    IOTAG_PORT__ITEMS
} iotagPort_e;

 

 



 
                    
            
                

相关文章:

  • 2022-12-23
  • 2022-01-11
  • 2021-06-21
  • 2022-03-02
猜你喜欢
  • 2022-01-14
  • 2022-02-27
  • 2021-04-05
相关资源
相似解决方案