0
我想弄清楚在c中做半繼承的一個好方法。c繼承的實現
這是我想出
//statemachine.h
...
#define CHANGE_STATE(newState) \
do { \
printf("[%s]->", stateStrings[state]); \
state = newState; \
printf("[%s]\r\n", stateStrings[state]); \
} while (0)
。
//trafficlight.c
#include "trafficlight.h"
#include "statemachine.h"
// Is a state machine
typedef enum {
green,
yellow,
red
} traffic_state;
static const char * stateStrings [] = {
"green",
"yellow",
"red"
};
static traffic_state state = red;
// Move to the next signal
void lightChange(void) {
CHANGE_STATE((state+1)%3);
}
這個想法是,要成爲一個狀態機的任何模塊(即利用CHANGE_STATE的)必須定義狀態和stateStrings。
只需尋找有關此方法的反饋。
編輯:
問題移到codereview