Malheureusement, Microsoft définit beaucoup de macros qui sont injectées dans votre code que vous les aimiez ou non. Donc, mieux vaut ne pas répéter leur erreur et éviter de définir des macros. Le meilleur que vous pouvez faire est de définir constantes au lieu de macros, et les mettre dans un espace de noms pour éviter les conflits de noms. Par exemple:
namespace Log
{
const int Info = 1;
const int Warning = 2;
const int Error = 4;
const int Debug = 8;
}
Ensuite, vous les utiliser dans votre code comme Log::Info
, Log::Error
et ainsi de suite.
EDIT: Comme Tinctorius souligne dans un commentaire, vous seriez probablement mieux d'utiliser un enum
dans ce cas:
enum LogLevel
{
Info = 1;
Warning = 2;
Error = 4;
Debug = 8;
}
Dans ce cas, vous n'avez pas besoin de préfixer les valeurs du type enum
nom, utilisez simplement des variables de ce type. Par exemple:
LogLevel level = Warning;
Ceci présente l'avantage d'offrir une sécurité de type. Vous pouvez également réutiliser les noms des autres enum
s.
Que voulez-vous que le résultat final soit dans de telles situations? Et qu'avez-vous essayé? –