Selbstreferentielle Strukturen in einer C-Headerdatei (.h) definieren?

8

Ich versuche, eine Struktur zu erstellen, die in zwei .c-Quelldateien verwendet wird, um eine einfache verkettete Listenstruktur zu erstellen. Ich dachte, es würde Zeit sparen, um eine Struktur in der Header-Datei zu erstellen, jedoch bekomme ich einen 'Parse Fehler vor *' Fehler.

Dies ist der Code, den ich verwende:

%Vor%

Bearbeiten: Ich habe ursprünglich ein Detail weggelassen, das heißt, ich kompiliere tatsächlich mit xcc aus der XMOS Toolchain. Ich verstehe immer noch nicht, dass es einen Unterschied in .h -Dateisyntax geben würde.

Könnte es eine Kompilierungsmarke sein, die ich verwende?

Hier ist der Konsolenausdruck:

%Vor%     
Tim Greene 18.12.2011, 00:51
quelle

2 Antworten

10

Wenn man sich die XMOS-Dokumentation ansieht, scheint das Problem darin zu bestehen, dass XC nicht C ist, sondern nur eine C-ähnliche Sprache. Aus dem "XC Programming Guide":

  

XC bietet viele der gleichen Fähigkeiten wie C, wobei die Hauptunterlassung die Unterstützung ist   für Zeiger.

... das erklärt, warum es die Zeiger next und prev in Ihrer Struktur nicht akzeptiert.

Anscheinend können Sie mit xcc jedoch C- und XC-Quellen mischen. Wenn Sie also die Verwendung der Struktur auf C-Code beschränken wollten, sollte es funktionieren. Aus dem "XCC Command-Line Manual" sieht es so aus, dass alles mit der Erweiterung .xc (wie in der Kommandozeile, die Sie oben verwendet haben) standardmäßig als XC und nicht als C-Quellcode behandelt wird. Dies kann überschrieben werden, indem Sie die Option -xc vor den C-Quellen in der Befehlszeile und -x danach setzen (oder benennen Sie einfach die Dateien mit der Erweiterung .c um).

Wenn Sie müssen XC anstelle von C verwenden, müssen Sie möglicherweise einen anderen Weg finden, Dinge zu tun (Arrays, vielleicht?).

    
Dmitri 18.12.2011, 02:55
quelle
1

Verwenden Sie eine Forward-Deklaration von struct list_struct :

%Vor%

Vielleicht erkennt Ihr Compiler den Bezeichner nicht in der Mitte seiner eigenen Definition, ich bin mir nicht sicher, was die Standards dazu sagen (wenn überhaupt).

Für diejenigen, die es noch nicht wissen, ist dies auch der Weg, um mit zirkulären Abhängigkeiten in struct definitions umzugehen:

%Vor%     
Kevin 18.12.2011 02:29
quelle

Tags und Links