我不确定使用C枚举的正确语法是什么.我有以下代码:

enum {RANDOM, IMMEDIATE, SEARCH} strategy;
strategy = IMMEDIATE;

但这不会编译,出现以下错误:

error: conflicting types for ‘strategy’
error: previous declaration of ‘strategy’ was here

我做错了什么?

推荐答案

声明枚举变量的过程如下所示:

enum strategy {RANDOM, IMMEDIATE, SEARCH};
enum strategy my_strategy = IMMEDIATE;

但是,可以使用typedef来缩短变量声明,如下所示:

typedef enum {RANDOM, IMMEDIATE, SEARCH} strategy;
strategy my_strategy = IMMEDIATE;

使用命名约定来区分类型和变量是个好主意:

typedef enum {RANDOM, IMMEDIATE, SEARCH} strategy_type;
strategy_type my_strategy = IMMEDIATE;

C++相关问答推荐

如何通过Zephyr(Devicetree)在PR Pico上设置UTE 1?

为什么静态说明符为内联函数生成外部定义?

你能用自己的地址声明一个C指针吗?

为什么写入系统调用打印的字符数不正确?

如何使用Python C API实现多线程程序?

两个连续的语句是否按顺序排列?

如何调试LD_PRELOAD库中的构造函数?

C中的指针增量和减量(*--*++p)

使用双指针动态分配和初始化2D数组

无法在OpenGL上绘制三角形

类型定义 struct 与简单的类型定义 struct

如何将两个uint32_t值交织成一个uint64_t?

如何在zOS上编译共享C库

在运行时判断C/C++指针是否指向只读内存(在Linux操作系统中)

在吉陀罗中,_2_1_和CONCAT11是什么意思?

为什么GCC不能在 struct 初始值设定项中以sizeof作为条件的三进制中处理复合文字的编译时求值?

在我的第一个C语言中观察到的错误';你好世界';程序

我可以使用Windows SDK';s IN6_IS_ADDR_LOOPBACK等,尽管没有文档?

当另一个指向 const 的指针观察到数据时,通过指针更改数据是否安全?

UEFI 应用程序中的计时器回调仅在 AMI BIOS 中挂起