No solo funciona en ningún lado, sino que puede conducir a algunas técnicas interesantes. Aquí hay un ejemplo que genera una enumeración y una tabla de cadenas correspondiente que se garantiza que estarán sincronizadas.
Animals.h:
ANIMAL(Anteater)
ANIMAL(Baboon)
...
ANIMAL(Zebra)
AnimalLibrary.h:
#define ANIMAL(name) name,
enum Animals {
#include "Animals.h"
AnimalCount
};
#undef ANIMAL
extern char * AnimalTable[AnimalCount];
AnimalLibrary.CPP:
#include "AnimalLibrary.h"
#define ANIMAL(name) #name,
char * AnimalTable[AnimalCount] = {
#include "Animals.h"
};
main.cpp:
#include "AnimalLibrary.h"
int main()
{
cout << AnimalTable[Baboon];
return 0;
}
Asegúrese de no poner los habituales incluyen guardias en cualquier archivo que se incluirá varias veces!
Aunque estoy de acuerdo con William Pursell, esta técnica hará que la gente se rasque la cabeza.
¿Por qué no intentas verte primero? – Nawaz
.. no está cerca de un compilador en este momento ... – JasonGenX