2 Stimmen

Was bewirkt dieser C-Trick?

Ich habe den folgenden Code in diese Antwort a Was ist Ihr liebster C-Programmiertrick?

Was bewirkt dieses Codestück? Wie ist er nützlich?

double normals[][] = {
    #include "normals.txt"
};

5voto

Reed Copsey Punkte 536986

Hier wird der Präprozessor verwendet, um ein Array zu initialisieren.

Es ist im Grunde Inlining der Code, der das Array mit Werten füllt, durch das Lesen von einer externen Textdatei. Beachten Sie, dass dies erfordert, dass "normals.txt" mit Werten gefüllt wird, die der C-Syntax entsprechen, d.h.:

{0, 0, 1},
{0, 1, 0},
{1, 0, 0}

0voto

sblair Punkte 1065

Das 2D-Array wird mit dem Inhalt der Datei "normals.txt" initialisiert, die vermutlich gültigen C-Code enthält und wahrscheinlich mit anderem Code geteilt wird oder die Ausgabe einer anderen Software ist.

0voto

Jason Punkte 30904

Verwendung der Präprozessor-Direktive #include fügt jeden Code aus der Datei, auf die es verweist, an Ort und Stelle ein ... was auch immer in "normals.txt" steht, wäre also als gültiger C-Syntax-Code formatierter Text, der in die Array-Initialisierungsliste für normals .

Da die Vorverarbeitung vor dem eigentlichen Kompilierungsschritt stattfindet, wird dadurch gültiger C-Code zur Initialisierung der normals 2D-Array, ohne dass der Programmierer eine Menge Text in der eigentlichen .c-Datei erstellen muss, der die Werte des Arrays initialisiert.

0voto

TJD Punkte 11622

Dies führt zu hässlichem Code. Eine viel sauberere Option wäre es, wenn das Programm, das die Datei normals.txt generiert, nur eine .c-Datei mit der vollständigen Array-Deklaration erzeugen würde.

CodeJaeger.com

CodeJaeger ist eine Gemeinschaft für Programmierer, die täglich Hilfe erhalten..
Wir haben viele Inhalte, und Sie können auch Ihre eigenen Fragen stellen oder die Fragen anderer Leute lösen.

Powered by:

X