用于定义全局const映射的约定

时间:2013-06-03 14:57:40

标签: c map enums const c-preprocessor

目前我做了以下事情:

parser.h

typedef enum {
    FIN = 0x80,
    RSV1 = 0x40
} WS_FLAGS;

parser.c

int main() {
    return WS_FLAGS.FIN;
}

定义全局常量映射的惯例是什么?

我比较喜欢这样的事情:

int main() {
    return WS_FIN;
}

博多

2 个答案:

答案 0 :(得分:1)

在C中,FIN未定义为WS_FLAGS的本地定义。它与C#等其他语言不同。

我不知道它是否是一个召集,但由于你不能在C中声明命名空间,它通常会在我的枚举声明前加上一些提醒枚举名称的名称:

typedef enum {
    WS_FLAG_FIN = 0x80,
    WS_FLAG_RSV1 = 0x40
} WS_FLAGS;

typedef enum {
    WS_FIN = 0x80,
    WS_RSV1 = 0x40
} WS_FLAGS;

...所以WS_FIN不太可能与任何其他something_FIN声明冲突。

然后,在你的主要部分,你只需通过以下方式打电话给我:

int main()
{
    return WS_FLAG_FIN;
}

答案 1 :(得分:0)

请参阅#define之类的枚举。

如果你写:

typedef enum {
    FIN = 0x80,
    RSV1 = 0x40
} WS_FLAGS;

然后你必须写:

int   main()
{
   return FIN;
}

您可以将枚举用作以下参数:

int  foo(WS_FLAGS flag)
{
    return flag;
}

int  main()
{
    return foo(FIN); // return FIN
}