Basis van programmeren in C
#define DEBUG 0
#ifdef DEBUG
printf("A\n");
#endif
#if DEBUG
printf("B\n");
#endifWat is de uitvoer als de bovenstaande code binnen de functie main wordt geschreven en uitgevoerd?
- AAlleen A wordt afgedrukt
- BEr wordt niets afgedrukt
- CA en B worden afgedrukt
Antwoord en toelichting tonen
Antwoord: A. Alleen A wordt afgedrukt
#ifdef DEBUG controleert alleen of een macro met de naam DEBUG is gedefinieerd, niet de waarde ervan. DEBUG is gedefinieerd met de waarde 0, dus de voorwaarde is waar en het statement dat A afdrukt, wordt gecompileerd. #if DEBUG controleert de waarde, die 0 is, dus de voorwaarde is onwaar en het statement dat B afdrukt, wordt verwijderd. Bij het in- en uitschakelen van debugcode ontstaan zulke tegenstrijdigheden als niet consequent #ifdef of #if voor de test wordt gebruikt.