définir une commande du préprocesseur, c'est comme faire de la "remplacer tout" dans votre éditeur, il peut remplacer une chaîne par une autre, puis compiler le résultat.
enum est un cas particulier de type, par exemple, si vous écrivez:
enum ERROR_TYPES
{
REGULAR_ERR =1,
OK =0
}
il existe un nouveau type appelé ERROR_TYPES.
il est vrai que REGULAR_ERR rendements à 1, mais la conversion de ce type int doit produire un casting d'avertissement (si vous configurez vous êtes compilateur à haut niveau de verbosité).
résumé:
ils sont à la fois semblables, mais lors de l'utilisation d'enum vous profitez de la vérification de type, et en utilisant définit il vous suffit de remplacer le code des chaînes de caractères.