当前位置:  开发笔记 > 编程语言 > 正文

typedef enum,在其中赋值

如何解决《typedefenum,在其中赋值》经验,为你挑选了2个好方法。

用gcc C99编译

我一直在使用enums一段时间.但是,我正在使用一些示例代码来开发我的应用程序.我偶然发现了一些像这样的代码.我被告知这是使用枚举时的最佳实践.但我不知道这有什么好处.

typedef enum {
    TYPE_DATE,
    TYPE_TIME,
    TYPE_MONEY,

    TYPE_COUNT,
    TYPE_UNKNOWN = TYPE_COUNT
} string_type_e;

为什么TYPE_COUNT要分配TYPE_COUNTTYPE_UNKNOWN谁?

非常感谢任何建议,



1> Pete Kirkham..:

默认情况下,编译器会自动为枚举设置从0开始的整数值.因此,日期将为零,时间一和二.下一个值是'psuedo'枚举值TYPE_COUNT,它将得到值3,恰好是'正确'枚举值的数量.

TYPE_UNKNOWN是另一个值,它代表的东西不是"正确的"值,因此将无法通过测试e < TYPE_COUNT.使它等于TYPE_COUNT意味着每个不同的有意义的值是连续的,但我不知道任何显着的优势(如果TYPE_COUNT一个小于2的幂,这可能会影响编译器可以使用的表示,并且它的"好"有值连续的,但它其实并不重要,因为你不会过去增加他们TYPE_COUNT反正)



2> Mehrdad Afsh..:

枚举值基本上是整数常量.默认情况下,它们被赋予枚举+ 1中的最后一个元素的值(第一个元素为0).当你想要计算那些用数组或类似的东西来映射的元素时,就像那样声明的枚举(如果你从中添加或删除它将动态更新),你可以将COUNT常量放在它的结尾(TYPE_COUNT在你的例子中).为了能够区分枚举中的无效值,您可能希望声明另一个常量.在您的示例中,该常量将等于计数常量,这是一个大于枚举最大值的值.

推荐阅读
低调pasta_730
这个屌丝很懒,什么也没留下!
DevBox开发工具箱 | 专业的在线开发工具网站    京公网安备 11010802040832号  |  京ICP备19059560号-6
Copyright © 1998 - 2020 DevBox.CN. All Rights Reserved devBox.cn 开发工具箱 版权所有