考虑以下示例:
enum my_enum
{
ENUMERATER_1,
ENUMERATER_2,
ENUMERATER_TOTAL,
}
typedef enum my_enum my_enum_t // just if using option 2
static int use_my_enum(int myenum); // 1
static int use_my_enum(my_enum_t myenum); // 2
static int use_my_enum(enum my_enum myenum); // 3
哪种选择可以考虑最佳做法,1,2或3?
事先我的意见是,您应该始终使用int
类型,因为标准enums
为int
,您可以为enum
类型分配任何值,如果您使用任何其他选项,您可能会产生一种错觉,即如果您的论证有效,则无需测试。使用int
作为enum
参数的类型,更清楚的是您应该始终确认输入参数。
我发现可能有理由使用enum
作为所有其他程序语言的类型,但不能用于C,有没有理由认为选项2或3比1更好的做法?
结论: 由于没有技术问题,因此确认这只是个人偏好并不是错误的。无论如何,我会重新考虑我的第一个假设,并因为可读性而将选项#3作为稍微好一些的做法。
答案 0 :(得分:5)
我愿意:
typedef enum
{
ENUMERATER_1,
ENUMERATER_2,
ENUMERATER_TOTAL,
} my_enum;
此外,以_t
结尾的类型名称将保留用于下一个POSIX标准。
答案 1 :(得分:3)
使用其中任何一个都没有任何内在错误。
使用现代IDE,如果它是一个好的,第二个是我想要的。
第一个也很好,但你可能会发现人们“假装”而不是使用实际值。例如,抛出4 in作为参数,它可能会导致不良行为。
归结为个人偏好。你可能会发现大多数人更喜欢#2。