2

考虑以下示例:

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?

在此之前,我的意见是您应该始终使用 type int,按照enums标准int,您可以为enum类型分配任何值,如果您使用任何其他选项,您可能会产生不需要测试的错觉你的论点是否有效。使用int作为enum参数的类型,更清楚的是您应该始终确认输入参数。

我发现可能有理由将enum用作所有其他程序语言的类型,但不适用于 C,有什么理由认为选项 2 或 3 比 1 更好?

结论:由于没有技术问题,所以确认这只是个人喜好并没有错。无论如何,由于可读性,我将重新考虑我的第一个假设并将选项#3 作为更好的做法。

4

2 回答 2

5

我会做:

typedef enum
{
    ENUMERATER_1,
    ENUMERATER_2,
    ENUMERATER_TOTAL,
} my_enum;

此外,以 结尾的类型名称_t保留用于下一个 POSIX 标准。

于 2013-05-17T20:47:13.867 回答
3

使用它们中的任何一个都没有本质上的错误。

对于现代 IDE,如果它是一个好的,第二个是我更喜欢的。

第一个也很好,但您可能会发现人们“伪造”而不使用实际值。例如,将 4 作为参数输入,它可能会导致不良行为。

这取决于个人喜好。你可能会发现最喜欢#2。

于 2013-05-17T19:42:39.983 回答