Ich verstehe nicht, warum der Compiler mir einen Fehler mit diesem Code gibt

8

Ich habe den folgenden C-Code, der mir sehr gut aussieht. Der compiler clamg (eigentlich gcc oder irgendein anderer C-Compiler) denkt jedoch anders.

%Vor%

Der Compiler gibt folgende Waring & amp; Fehlermeldungen. Irgendeine Idee, was hier falsch ist?

%Vor%     
pythonic 15.05.2012, 14:43
quelle

4 Antworten

15

Entfernen Sie das struct Schlüsselwort (es wird nicht benötigt, da Sie bereits typedef ed die Struktur haben):

%Vor%

Alternativ entfernen Sie typedef :

%Vor%

Weitere Informationen finden Sie unter Warum sollten wir typedef eingeben? eine Struktur so oft in C?

    
NPE 15.05.2012, 14:44
quelle
4

Entweder Sie

%Vor%

Oder Sie

%Vor%

Aber nicht verwechseln.

    
Didier Trosset 15.05.2012 14:45
quelle
3

Sie haben einen Typ namens Timer erstellt, löschen Sie einfach das Wort struct vor den Funktionsparametern, zum Beispiel:

%Vor%     
DGomez 15.05.2012 14:45
quelle
2

Der Grund für den Fehler ist, dass wenn Sie hier ankommen

%Vor%

Es gibt kein struct Timer im Gültigkeitsbereich (nur ein typedef für eine anonyme Struktur). Daher glaubt der Compiler, dass Sie einen neuen -Typ struct Timer deklarieren und einen Zeiger als Parameter verwenden möchten.

Eigentlich wäre das weniger als nützlich, da der Typ nur innerhalb der Funktion sichtbar wäre. Das würde es praktisch unmöglich machen, einen Parameter von außerhalb der Funktion zu übergeben.

Der Compiler sagt also, dass, obwohl es von der Sprache erlaubt ist, dies keine gute Idee ist!

    
Bo Persson 15.05.2012 16:22
quelle

Tags und Links