相关疑难解决方法(0)

如何在C中定义枚举类型(枚举)?

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

enum {RANDOM, IMMEDIATE, SEARCH} strategy;
strategy = IMMEDIATE;
Run Code Online (Sandbox Code Playgroud)

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

error: conflicting types for ‘strategy’
error: previous declaration of ‘strategy’ was here
Run Code Online (Sandbox Code Playgroud)

我究竟做错了什么?

c enums

263
推荐指数
8
解决办法
49万
查看次数

C状态机设计

我正在用混合C和C++制作一个小项目.我正在我的一个工作线程的核心构建一个小型状态机.

我想知道你是否会在SO上分享你的状态机设计技巧.

注意:我主要是经过久经考验的实施技术.

更新:基于SO上收集的所有重要输入,我已经确定了这个架构:

事件泵指向指向调度员的事件集成器. 调度程序指向1到n的操作,这些操作指向事件集成器. 带通配符的转换表指向调度程序.

c c++ architecture state-machine

192
推荐指数
9
解决办法
8万
查看次数

是否有典型的状态机实现模式?

我们需要在C中实现一个简单的状态机.
标准的switch语句是最好的方法吗?
我们有一个当前状态(状态)和转换触发器.


switch(state)
{
  case STATE_1:
     state = DoState1(transition);
     break;
  case STATE_2:
     state = DoState2(transition);
     break;
}
...
DoState2(int transition)
{
   // Do State Work
   ...
   if(transition == FROM_STATE_2) {
     // New state when doing STATE 2 -> STATE 2
   }
   if(transition == FROM_STATE_1) {
    // New State when moving STATE 1 -> STATE 2
   }
   return new_state;
}
Run Code Online (Sandbox Code Playgroud)

对于简单的状态机是否有更好的方法

编辑:对于C++,我认为Boost Statechart库可能是要走的路.但是,它对C 没有帮助.让我们专注于C用例.

c design-patterns finite-automata

114
推荐指数
8
解决办法
11万
查看次数

状态机教程

我只是想知道是否有人知道在互联网上开发状态机的一些很好的教程.还是电子书?

我开始在状态机上工作,只需要一些通用的东西让我开始.

c c99 state-machine

68
推荐指数
5
解决办法
12万
查看次数

枚举类型检查C/gcc

请参阅下面的简单示例.当一个函数返回一个enum被分配给一个不同的变量enum我甚至没有得到任何警告gcc -Wall -pedantic.为什么C编译器不能对enums 进行类型检查?还是gcc具体的?我现在无法访问任何其他编译器来试用它.

enum fruit {
APPLE,
ORANGE
};

enum color {
RED,
GREEN
};

static inline enum color get_color() {
    return RED;
}

int main() {
    enum fruit ftype;
    ftype = get_color();
}
Run Code Online (Sandbox Code Playgroud)

c enums gcc

18
推荐指数
2
解决办法
1万
查看次数