Tag: 状态机

如何在unit testingC时重置状态机

我有一个用于TI处理器的嵌入式C,需要进行unit testing。 对于目标编译,使用IAR,但我使用MinGW GCC在Win7机器上运行测试。 在C代码中,有些函数包含有时需要在测试之间重置的状态机。 这些状态机通常将其状态变量保持在本地静态,即使不是不可能,也很难完成该任务。 我不是很精通C ++类,但我有一个关于将C函数“导入”包装C ++类的想法作为成员函数,可以在需要重置时创建一个新对象。 下面的代码不起作用,但它说明了我的想法。 在main.cpp中: #include “statemachine.h” using namespace std; class stateMachineWrapper { public: extern void stateMachine(void); }; int main() { stateMachineWrapper myObject; myObject.stateMachine(); myObject.stateMachine(); stateMachineWrapper myNewObject; myNewObject.stateMachine(); myNewObject.stateMachine(); return 0; } 在statemachine.h中: void stateMachine(void); 在statemachine.c中: #include void stateMachine(void) { static int myState = 0; switch(myState) { case 0: […]

状态机没有function指针

我已经实现了一个复杂的状态机,具有许多状态转换,用于安全SIL 4系统。 此实现的后骨是使用函数指针完成的。 当一切顺利航行时,V&V反对在SIL 4系统中使用function指针。 参考 – 规则9 NASA .Misra C 2004然而并没有说不能使用函数指针。 有没有其他方法可以在没有任何函数指针的情况下实现复杂的状态机?