El uso de variables locales est'aticas en las funciones no resuelve el problema, porque una misma funci'on (por ejemplo, la funci'on NAND()) puede ser usada por muchos procesos (muchas puertas l'ogicas diferentes), y s'olo existe una variable est'atica para todos ellos, que inevitablemente tiene valores distintos en funci'on del proceso.
Una alternativa es usar macros (#define's), pero las macros son complicadas y muy dif'iciles de depurar. Adem'as, el compilador de C no es capaz de manipular macros de m'as de 64K bytes de longitud y en algunos casos es posible sobrepasar este l'imite cuando simulamos circuitos secuenciales muy grandes.
La soluci'on de todos estos problemas pasa por usar objetos. Cuando una clase se declara, se pueden declarar con ella funciones y estructuras de datos que son locales a cada objeto. De esta forma, una clase que implemente un contador y que necesite sus variables (l'ineas f'isicas) locales, servir'a para instanciar m'ultiples objetos que pueden simularse sin interferencias. Usando clases, la descripci'on jer'arquica de los circuitos digitales es mucho m'as natural.