Autor Thema: GCC: Komische Anmerkung  (Gelesen 7069 mal)

iksnagreb

  • Beiträge: 28
    • Profil anzeigen
Gespeichert
« am: 25. July 2012, 20:16 »
Heute hat mir der Compiler folgende Anmerkung ausgegeben:
Anmerkung: »struct cpu_state *« erwartet, aber Argument hat Typ »struct cpu_state *«
Irgend wie komische, aber was soll das bedeuten?

Jidder

  • Administrator
  • Beiträge: 1 625
    • Profil anzeigen
Gespeichert
« Antwort #1 am: 25. July 2012, 20:30 »
Kommt auf den Code an. Eine Ursache wäre, dass der Typ zum Zeitpunkt der Funktionsdeklaration noch nicht definiert ist, zum Beispiel, weil der entsprechende Header nicht eingebunden ist. Der Compiler sollte weitere Warnungen ausgeben, wenn das der Fall ist. Gibt es da noch etwas? Ansonsten musst du den Code zeigen.
Dieser Text wird unter jedem Beitrag angezeigt.

iksnagreb

  • Beiträge: 28
    • Profil anzeigen
Gespeichert
« Antwort #2 am: 25. July 2012, 20:49 »
Die Anmerkung kommt nicht mehr, es hat auch so Funktioniert, ist nur irgendwie komisch, dass sich der Compiler eine Anmerkung ausgiebt, wenn der passende Typ gegeben ist.

Jidder

  • Administrator
  • Beiträge: 1 625
    • Profil anzeigen
Gespeichert
« Antwort #3 am: 25. July 2012, 21:17 »
Der Compiler ist der Meinung, dass die Typen nicht dieselben sind. Der Name ist nicht das einzige Kriterium dafür.

Da du nicht den entsprechenden Code hergezeigt hast, kann ich nur spekulieren, was die Ursache war. Zum Beispiel könnte so eine Situation vorgelegen haben: http://ideone.com/z2lGW Die Meldung ist da eine andere (vermutlich andere Compiler-Version), aber der sagt da sogar explizit, dass die Variable nur in den Kontext der Funktionsdeklaration gültig ist. Das heißt in der nächsten Zeile hat er schon wieder vergessen, dass es den Typ struct cpu_state gibt. Es ist also nicht nur der Name wichtig, sondern auch der Scope, d.h. ob der Typ global oder zum Beispiel lokal ist.
Dieser Text wird unter jedem Beitrag angezeigt.

 

Einloggen