- 
Use structs as local namespaces in C code struct Engine_Data { struct State* currentState; int someFlags; }; static struct Engine_Data s; 
Putting all static vars in a compilation unit into a single struct has advantages:
- Watching in a debugger is easy since there's a single state variable containing all state
- 
Transition from static to reusable objects is much easier since instance data is already encapsulated struct Engine_vtable { int (start)(); int (stop)(); }; /* Reusable class / struct Engine { struct Engine_vtable vtable; struct Engine_Data s; }; /* Initializer / void Engine_Init(struct Engine e); int main() { struct Engine engine; Engine_Init(&engine); }