#ifndef __GNUC__ würgt mich

Sep 04 2020

Diese Frage könnte völlig seltsam sein. Ich arbeite derzeit an einem alten Code (nicht von mir). Ich bin eigentlich kein C-Programmierer, aber ich versuche zu verstehen, was dieser Teil des Codes eigentlich tun soll. Zum Glück ist der seltsame Teil nicht zu lang (Teil einer Konfiguration):

int
main ()
{
#ifndef __GNUC__
       choke me
#endif

  ;
  return 0;
}

Wenn es kein GNU-Compiler ist, dann "choke me"... was choke mesoll das heißen ... ich verstehe es wirklich nicht. (und fand nur seltsame Dinge beim googeln würgen mich -.-)

Antworten

3 NateEldredge Sep 04 2020 at 09:36

Es soll nur etwas sein, das nicht gültig ist C und einen Syntaxfehler auslöst, der das Kompilieren der Datei verhindert.

Vermutlich hatte der Programmierer nicht beabsichtigt, dass der Code mit einem Compiler außer GNU C (gcc) funktioniert, sodass der Build fehlschlägt, wenn ein anderer Compiler verwendet wird. Die ausgewählten Wörter haben keine besondere Bedeutung, außer dass "Choke Me" wahrscheinlich im Sinne von "Dies ist etwas, was der Compiler nicht" schlucken "kann und was es töten wird" gemeint war.

Der modernere Ansatz wäre zu verwenden #error.

2 Someprogrammerdude Sep 04 2020 at 09:36

Es ist eine ungültige Aussage, die zu einem Fehler führen würde.