考虑以下示例:
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
Run Code Online (Sandbox Code Playgroud)
最佳做法是1、2或3,可以选择哪种选择?
事先,我的观点是,你应该总是使用类型int,因为enums是int由标准的,可以分配给任何值enum类型,如果你使用的任何其他选项,你可能有错觉,以为你不需要测试您的论点是否有效。使用int的类型enum参数,它更清晰,你应该总是确认输入参数。
我发现可能有理由在enum所有其他程序语言中都将as用作类型,但对于C而言却没有,是否有理由认为选项2或3比1更好?
结论:由于没有技术问题,因此确认这只是个人喜好是没有错的。无论如何,由于可读性,我将重新考虑我的第一个假设,并将选项#3作为稍微更好的做法。
我会做:
typedef enum
{
ENUMERATER_1,
ENUMERATER_2,
ENUMERATER_TOTAL,
} my_enum;
Run Code Online (Sandbox Code Playgroud)
另外,以POS结尾的类型名称_t保留给下一个POSIX标准。