2

目前我做以下事情:

解析器.h

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

解析器.c

int main() {
    return WS_FLAGS.FIN;
}

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

例如,我更喜欢这样的东西:

int main() {
    return WS_FIN;
}

博多

4

2 回答 2

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声明发生冲突。

然后,在您的主要内容中,您只需通过以下方式调用 I:

int main()
{
    return WS_FLAG_FIN;
}
于 2013-06-03T15:11:37.133 回答
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
} 
于 2013-06-03T15:17:06.543 回答