Читать книгу C für Dummies - Dan Gookin - Страница 101

Vermeidung »verschachtelter« Kommentare

Оглавление

Den größten Fauxpas erlauben Sie sich, wenn Sie Kommentare »verschachteln« oder einen Kommentar in einen anderen einfügen. Zum Beweis präsentiere ich das folgende Fragment aus einem Quelltext:

if (all_else_fails) { display_error(errno); /* Fehlernummer existiert */ walk_away(); } else get_mad();

Machen Sie sich keine Gedanken über die inhaltliche Bedeutung dieses Codes, das wird Ihnen später klar werden. Achten Sie mal darauf, dass die Funktion display_error einen Kommentar hinter sich stehen hat: Fehlernummer existiert. Aber nehmen wir mal an, Sie wollen mit Ihrem noch kommenden C-Verständnis diesen Teil des Programms auskommentieren, sodass nur noch die get_mad()-Funktion ausgeführt wird. Sie kommentieren also alles andere aus:

/* if (all_else_fails) { display_error(errno); /* Fehlernummer existiert */ walk_away(); } else */ get_mad();

So, nun sieht der Compiler nur noch get_mad(), oder?

Tja, Pustekuchen. Der Kommentar beginnt in der ersten Zeile mit einem /*. Aber er endet in der Zeile mit der display_error-Funktion. Weil die Zeile mit einem */ endet, ist dies auch das Ende des Kommentars. Der C-Compiler macht dann in der Zeile mit der walk_away-Funktion weiter und erzeugt einen Syntaxfehler, sobald er auf die allein stehende geschweifte Klammer } trifft. Das zweite Kommentarende (das über der get_mad()-Funktion) erzeugt auch noch einen Fehler. Zwei Fehler!

Um diese Falle zu vermeiden, müssen Sie also ein wenig aufpassen, wenn Sie einen Teil des C-Programms ausschalten. Die Lösung hier wäre, Fehlernummer existiert nicht als Kommentar zu schreiben oder Sie kommentieren jede Zeile für sich aus:

/* display_error(errno); /* Fehlernummer existiert */

Diese Methode funktioniert, weil der Kommentar immer noch mit einem */ endet. Das zusätzliche /* im Kommentar wird ignoriert.

Außerdem haben Sie vielleicht gemerkt, dass der »neue« Kommentarstil hier auch recht zweckmäßig wäre:

display_error(errno); // Fehlernummer existiert

Denn Kommentare mit /* und */ beziehungsweise mit // ignorieren sich gegenseitig.


Abbildung 3.2: Die Tücken verschachtelter Kommentare

Verschachtelte Kommentare sind nervig, aber Sie müssen sich jetzt noch keine Gedanken darüber machen.

C für Dummies

Подняться наверх