gpt4 book ai didi

c - 在 C 中访问结构内的枚举

转载 作者:行者123 更新时间:2023-12-03 20:00:24 25 4
gpt4 key购买 nike

#include <stdio.h>

typedef struct test {
enum en {
zero, one
} en;
} test;

int main(){
test t;
// t.en = test::one; <-- How can I accomplish this?
return 0;
}
test::oneC++语法并且不会在 C 中编译.
是否可以访问 en从 C 中的结构外部?
我知道我可以在这里使用整数,例如 t.en = 1;但我正在尝试使用枚举值。

最佳答案

在 C 中, struct 不会为类型创建新的命名空间 - 您在结构体定义的主体中定义 enum en 的事实没有区别,该标记名称对程序中的其余代码可见。它不是 struct 定义的“本地”。与嵌套的 struct 类型相同 - 如果使用标记声明,例如

struct foo {
struct bar { ... };
...
};
struct bar 可在 struct foo 之外使用。
C 定义了四种类型的命名空间 - 一种用于所有标签(通过 goto: 的存在消除歧义),一种用于所有标签名称(通过 structunionenum 关键字消除歧义),一种用于 structunion 成员名称(根据 structunion 定义 - 通过它们在 structunion 类型定义中的存在,或通过 .-> 成员选择运算符的存在来消除歧义),以及一个用于所有其他标识符(变量名称、外部(函数)名称、 typedef 名称、函数参数名称等)。

关于c - 在 C 中访问结构内的枚举,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/67572258/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com