Grundlagen der Programmiersprache C
#define DEBUG 0
#ifdef DEBUG
printf("A\n");
#endif
#if DEBUG
printf("B\n");
#endifDer obige Code steht in der Funktion main. Welche Ausgabe erzeugt er bei der Ausführung?
- ANur A wird ausgegeben
- BNichts wird ausgegeben
- CA und B werden ausgegeben
Antwort und Erläuterung anzeigen
Antwort: A. Nur A wird ausgegeben
#ifdef DEBUG prüft nur, ob ein Makro namens DEBUG definiert ist, nicht seinen Wert. DEBUG ist mit dem Wert 0 definiert, daher ist die Bedingung wahr, und die Anweisung, die A ausgibt, wird kompiliert. #if DEBUG prüft den Wert; er ist 0 und damit falsch, sodass die Anweisung, die B ausgibt, entfernt wird. Wer Debug-Code ein- und ausschaltet, sollte einheitlich entweder mit #ifdef oder mit #if prüfen, sonst entstehen solche Widersprüche.
Weiter: 9 weitere Fragen zu Grundlagen der Programmiersprache C