在C语言标准或文献中是否有结构,联合和枚举类型的通用术语?
更新:在处理以下宏时出现了这个问题:
/* GCC */
#if defined(__GNUC__)
# define TYPEDEF_PACKED_BEGIN(type, tag) \
typedef type __attribute__((packed, aligned(1))) tag
# define TYPEDEF_PACKED_END
/* Green Hills */
#elif defined(__ghs__)
# define TYPEDEF_PACKED_BEGIN(type, tag) \
#pragma pack(1) \
typedef type tag
# define TYPEDEF_PACKED_END \
#pragma pack()
#endif
Run Code Online (Sandbox Code Playgroud)
TYPEDEF_PACKED_BEGIN(struct, my_struct_tag) {
int a;
int b;
} my_struct_type;
TYPEDEF_PACKED_END
TYPEDEF_PACKED_BEGIN(enum, my_enum_tag) {
E_FOO,
E_BAR
} my_enum_type;
TYPEDEF_PACKED_END
Run Code Online (Sandbox Code Playgroud)
我看到的这三个词是"标签类型".的理由是,这三个类型类别由一个关键字和一个识别标签从标签的命名空间.C标准提到了几个地方的标签,特别是:
6.2.3标识符的名称空间
[...]因此,各类标识符都有单独的名称空间,如下所示:
- 结构,联合和枚举的标记(通过遵循任何关键字struct,union或enum来消除歧义);