Hier ist der Strukturdeklarationscode.
%Vor% Und wenn ich eine Funktion wie diese schreibe, gibt der Compiler einen Fehler aus. Es heißt cur undeclared before first use
.
Nachdem ich die Referenz nachgeschlagen habe, heißt es, dass die typedef
nur > ein wenig wie #define
funktioniert. Es macht einfach eine Ersetzung zur Kompilierzeit. Ist das der Grund, warum der Code nicht kompiliert werden kann?
In diesem Code:
%Vor% Das item
in der dritten Zeile wird als Name der Variablen item
(der Parameter für die Funktion) und nicht als Typ verwendet. Folglich sieht die dritte Zeile so aus, als ob sie als ein Ausdruck beginnt, der item
mit der undefinierten Variable cur
multipliziert, was zu Problemen führt; der Rest des Ausdrucks ist auch falsch.
Wenn Sie das nicht möchten, verwenden Sie nicht denselben Namen für einen Typ und eine Variable. Sie werden andere Leute verwirren, auch wenn Sie sich selbst und den Compiler nicht verwirren.
Die Referenzquelle, die besagt, dass typedef
und #define
gleich sind, sollte aus Ihrer Referenzliste gelöscht werden now ! Wenn es zwei so fundamental verschiedene Konstrukte nicht unterscheiden kann, ist es gefährlich, weil Sie nicht wissen, wann es Sie irreführt (aber das ist ein Fall, in dem es Sie irreführt).
Ein typedef ist nur ein neuer Name für einen bereits existierenden Typ. Defines werden vom Präprozessor behandelt, während Typedefs vom C-Compiler selbst behandelt werden. [kopiert von diesem Link]
Überprüfen Sie diese Frage: Sind typedef und #define gleich in c ?