I traditionell C har man använt preprocessorn för att definiera olika typer av konstanter. I C++
gör man hellre dylika definitioner med const, men det gamla sättet finns kvar
för dem som vill använda det. Man använder här preprocessorns nyckelord
#define. Notera att inte heller detta ord är ett reserverat ord i C++ (eller
C). Den allmänna formen för en konstantdefinition är:
#define konstantnamn värde |
Här behöver man inte heller använda ett semikolon för att avsluta raden, eftersom det är frågan om
ett preprocessordirektiv som aldrig ens ses av kompilatorn. Några exempel på definitioner är.
#define MEDDELANDE "Hello World!"
#define MIN_VARDE 0
#define MaxVarde 100 |
Traditionellt har definitioner till preprocessorn alltid getts namn med stora bokstäver, närmast för
att separera dessa från normala variabler. Konstanter som görs med const i
C++ skrivs däremot normalt med både små och stora bokstäver. Det som preprocessorn gör då den stöter
på t.ex. MEDDELANDE ovan i en programfil är att den helt enkelt ersätter
texten MEDDELANDE med texten "Hello World!", alltså
normal textsubstitution. För kompilatorn ser texten sedan ut som vilken text eller vilket tal som
helst. Man kan avdefiniera en konstant genom att använda #undef. Vi kan
t.ex. avdefiniera MaxVarde och ersätta den med en med stora bokstäver:
#undef MaxVarde
#define MAX_VARDE 100 |
Vi kommer nedan att se ett sammanhang där #define används i stor grad ännu
idag. I övriga sammanhang rekommenderas som sagt att konstanter definierade med
const används istället.