Beschränken Sie den Umfang von #define Labels

Was ist die richtige Strategie, um den Umfang von zu begrenzen?#define Etiketten und unerwünschte Token-Kollisionen vermeiden?

In der folgenden Konfiguration:

Haupt c

# include "Utility_1.h"
# include "Utility_2.h"
# include "Utility_3.h"
VOID Main() { ... }

Utility_1.h

# define ZERO "Zero"
# define ONE  "One"
BOOL Utility_1(); // Uses- ZERO:"Zero" & ONE:"One"

Utility_2.h

# define ZERO '0'
# define ONE  '1'
BOOL Utility_2(); // Uses- ZERO:'0' & ONE:'1'

Utility_3.h

const UINT ZERO = 0;
const UINT ONE = 1;
BOOL Utility_3(); // Uses- ZERO:0 & ONE:1

Hinweis: Utility _1, Utility_2 undUtility_3 wurden unabhängig geschrieben

Fehler: Makro-Neudefinition und Token-Kollision
Ebenfalls,Die meisten Sorgen machen: Der Compiler gibt nicht an, was welches Token ersetzt hat

{Bearbeiten}Hinweis: Dies ist eine allgemeine Frage. Bitte nicht vorschlagenenum oderconst

d.h. was zu tun ist, wenn: ICH BENUTZEN MUSS#define & _Bitte kommentieren Sie meine vorgeschlagene Lösung unten. __

Antworten auf die Frage(9)

Ihre Antwort auf die Frage