In C habe ich die unten gezeigte Struktur definiert und möchte sie inline initialisieren. (Weder die Felder in der Struktur noch das Array foos ändern sich nach der Initialisierung). Der Code im ersten Block funktioniert einwandfrei.
%Vor%Allerdings brauche ich das tmp-Feld nicht wirklich. In der Tat, es wird nur meinen Code überfluten (dieses Beispiel ist etwas vereinfacht). Stattdessen möchte ich die Werte von some-array in der Deklaration für foos deklarieren. Ich kann jedoch nicht die richtige Syntax bekommen. Vielleicht sollte das Feld einige-Array anders definiert werden?
%Vor% Hier ist some_array
eigentlich ein Zeiger, kein Array. Sie können es wie folgt definieren:
Noch eine Sache, der ganze Punkt von typedef struct Foo Foo;
besteht darin, Foo
anstelle von struct Foo
zu verwenden. Und Sie können typedef wie folgt verwenden:
Zuerst gibt es zwei Möglichkeiten:
Im ersten Fall handelt es sich um ein statisches Programmierproblem, und es ist nicht kompliziert:
%Vor%Sie können diese Syntax verwenden, um das Array zu füllen:
%Vor%Wenn Sie die Größe des Arrays nicht kennen, handelt es sich um ein Problem mit der dynamischen Programmierung. Sie müssen die Größe fragen.
%Vor%Zweitens ist typedef nützlich, also wenn du das schreibst:
%Vor%bedeutet, dass Sie die Wörter "struct Foo" durch "Foo" ersetzen. Also ist die Syntax das:
%Vor%Prost.
Meine Antwort ist für den folgenden Codeabschnitt: -
%Vor%Alle oben genannten Probleme bei der Kompilierung sind darauf zurückzuführen, dass sie nicht mit den ANSI-Standards kompatibel sind. Die aggregierten "Foos" haben Unteraggregate, von denen einige geklammert sind, während andere nicht. Also, wenn Sie die internen Klammern entfernen nach repräsentieren das Array 'tmp' würde es ohne Fehler kompilieren. Für zB.
%Vor%