Pour info sur la programmation en C++ et être totalement "propre" dans le respect des types:
quand vous déclarez un enum vous déclarez un nouveau type à part entière en C++ et donc le plus simple est de typer votre variable programmeEtat au type de l'énumération.
enum {prgEtatFonctionnement, prgEtatMenu} programmeEtat = prgEtatFonctionnement;
on peut aussi donner un nom au nouveau type dans la déclaration de l'enum, par exemple typeEtat
enum typeEtat {prgEtatFonctionnement, prgEtatMenu};
typeEtat programmeEtat = prgEtatFonctionnement;
et pour économiser de la place mémoire si besoin, on peut même (en C++, pas en C) donner le type numérique sous jacent à l'énumération : par défaut c'est un int donc 2 ou 4 octets suivant la plateforme, mais si vous n'avez que peu d'énumérations et que leur valeur n'est pas importante, on peut par exemple mettre cela sur un seul octet :
enum typeEtat : byte {prgEtatFonctionnement, prgEtatMenu};
typeEtat programmeEtat = prgEtatFonctionnement;
les 2 enumerators (au sein de l'enum) ne sont pas des fonctions, ce sont des constantes nommées
ce que propose @jpbbricole est tout a fait pertinent. Il s'agit de faire une petite machine à état toute simple (cf mon tuto éventuellement sur le sujet où je parle aussi des enum)