Einzeilige Kommentare in Ansi-C

Lesezeit: 4 Minuten

ich bin es gewohnt zu // um einen einzeiligen Kommentar von Java und Visual Studio zu markieren und war überrascht, dass dies für Ansi-C nicht existiert. Verwenden /* my comment */ist ziemlich nervig. Gibt es eine andere Möglichkeit, einen einzeiligen Kommentar zu markieren, wenn Sie Ansi-C verwenden?

  • Wäre nett, wenn die Leute erklären würden, warum sie ablehnen …

    – Tod

    27. November 2011 um 10:54 Uhr

  • Der Grund für die Ablehnung liegt wahrscheinlich darin, dass Sie eine Frage stellen, die bei Google leicht gelöst werden kann. Dass ein bestimmter Kommentarstil in ANSI-C nicht existiert, ist eine Sache, Ärger auszudrücken, eine andere. Das Mischen von Kommentarstilen ist eine schlechte Angewohnheit /* nur sagen */

    – Ahmed Masud

    27. November 2011 um 11:05 Uhr

  • Nun, es stimmt, dass man leicht herausfinden kann, dass Ansi-C keine spezielle Syntax für einzeilige Kommentare hat, aber ich habe nach Alternativen gefragt.

    – Tod

    27. November 2011 um 12:18 Uhr

  • 🙂 Sie können jederzeit auf den c99-Standard umsteigen, der dies unterstützt, und voila, der Ärger ist weg

    – Ahmed Masud

    27. November 2011 um 12:22 Uhr


Benutzeravatar von Brett Hale
Brett Hale

ANSI-C, nein, aber die aktuelle Standardrevision erlaubt sie, und das schon seit C99.

  • Nach einer kürzlichen Beule würde ich nur hinzufügen – ich mag es nicht, C++ zu verwenden // Kommentare in C99, C11 usw. Ich groke sofort, womit ich es zu tun habe: “Es ist eine C-Datei”. Es hat mir noch nie Probleme bereitet. Dies ist jedoch eine rein persönliche Präferenz. Ebenfalls, // Kommentare funktionieren nicht in Makros – und ich suche hier nicht nach einem Makro vs. Inline-Argument.

    – Brett Hale

    30. November 2016 um 14:26 Uhr


Du könntest auch ein Makro schreiben:

#define COMMENT(x)

int main() {
   COMMENT(Hi there)
   return 0;
}

Abgesehen davon ist in ANSI C nichts offensichtlich – Sie haben Recht, wenn Sie das bemerken /* */ style ist in ANSI C 89 nicht gültig

  • Das Makro hat den Nachteil, dass Ihr Kommentar keine Kommas enthalten darf, es sei denn, Sie schließen ihn in Klammern ein (wie in COMMENT((Hi, there)))

    – Café

    27. November 2011 um 10:39 Uhr


  • @caf – einverstanden – ich glaube nicht, dass es Ihnen wirklich etwas bringt, einfach zu tippen /* */

    – Flexo

    27. November 2011 um 10:40 Uhr

  • @awoodland: Ich bevorzuge die //Syntax zum Auskommentieren von Code, da Sie nur am Anfang der Zeile eingeben müssen. Schreiben COMMENT(und eine schließende Klammer am Ende wird dies überhaupt nicht verbessern.

    – Tod

    27. November 2011 um 10:42 Uhr


  • Was ist der Vorteil eines solchen Kommentars gegenüber einem herkömmlichen?

    – olegst

    3. März 2016 um 9:45 Uhr

Benutzeravatar von pmg
pmg

Brunnen …

ANSI-C ist C99; und es erlaubt Kommentare beginnend mit // erstreckt sich bis zum Zeilenende.
In der zuvor veröffentlichten Norm (C89/C90) ist die // Kommentare wurden nicht beschrieben (aber viele Compiler akzeptierten sie trotzdem als Extra).

Sie haben noch eine weitere Möglichkeit zum Kommentieren: die #if 0 / #endif Konstruktion (wird normalerweise zum Auskommentieren von “inaktivem” Code verwendet)

/* ... */
#if 0
This is a comment
#endif
/* ... */

  • Jetzt wird es etwas klarer. Ich habe die Option -pedantic verwendet, die strenges ISO C und nicht nur ANSI-C erzwingt. Ist es richtig, das zu sagen // ist in ASNI-C (C99) erlaubt, aber nicht in striktem ISO C?

    – Tod

    27. November 2011 um 16:52 Uhr

  • Mit gccverwenden gcc -ansi -pedantic ... ist (vorerst) dasselbe wie gcc -std=c89 -pedantic .... Benutzen gcc im standardkonformen Modus mit C99 (soweit es geht) versuchen gcc -std=c99 -pedantic ...

    – pmg

    27. November 2011 um 17:23 Uhr

  • Danke fürs klarstellen! So gibt es die verschiedenen Versionen von C – C89, C99 und C11. Zumindest die ersten beiden sind auch als ANSI-C und ISO-C standardisiert, was nicht dasselbe ist, oder?

    – Tod

    27. November 2011 um 17:27 Uhr


  • ANSI-C oder ISO-C sind dasselbe (eines wird von ANSI veröffentlicht: American National Standards Institutedie andere nach ISO: Internationale Standardisierungsorganisation). Es gab einen C-Standard, der 1989 von ANSI (und 1990 von ISO) veröffentlicht wurde und durch den Standard von 1999 (beide Organisationen) ersetzt wurde, der durch den nächsten Standard ersetzt wird. Ein Entwurf des aktuellen Standards ist frei verfügbar unter open-std.org/JTC1/sc22/wg14/www/docs/n1256.pdf. Der Entwurf des kommenden Standards liegt vor open-std.org/JTC1/sc22/wg14/www/docs/n1548.pdf

    – pmg

    27. November 2011 um 17:36 Uhr

  • OK ich habe es. Aber warum interpretiert gcc -ansi immer noch als C89, wenn es einen anderen ANSI-Standard (C99) gibt?

    – Tod

    27. November 2011 um 17:40 Uhr

Benutzeravatar von nikola-miljkovic
nikola-miljkovic

Entschuldigung, aber es sieht nur in ANSI-C aus /* comment */ werden verwendet.
http://members.cox.net/midian/articles/ansic1.htm

1387130cookie-checkEinzeilige Kommentare in Ansi-C

This website is using cookies to improve the user-friendliness. You agree by using the website further.

Privacy policy