www.mikrocontroller.net

Forum: GCC "incomplete type is not allowed" mit Keil aber nicht mit g++


Important announcement: there is an English version of this forum on EmbDev.net. Posts you create there will be displayed on Mikrocontroller.net and EmbDev.net.
Autor: Robert (Gast)
Datum:

Diesen Beitrag bewerten:
lesenswert
nicht lesenswert
Hi,

Ich versuche gerade ein Logging-Framework von 
http://www.drdobbs.com/embedded-systems/225700666 für den Keil Compiler 
für ARM zu portieren. Dieses Projekt lässt sich ohne Probleme mit g++ 
unter Linux compilieren.

Leider scheitere ich mit dem Keil Compiler mit folgenden 
Fehlermeldungen:
logging/Logger.h(90): error:  #70: incomplete type is not allowed
logging/singleton.h(65): error:  #70: incomplete type is not allowed
logging/Logger.h(129): error:  #70: incomplete type is not allowed

Ich hab mir den Preprozessoroutput des g++ ausgeben lassen: 
http://www.pasteall.org/31617/cpp

Das Problem scheint zu sein: In Zeile 232 wird der Typ loggingReturnType 
benötigt, der nur durch eine Forward Declaration aus Zeile 224 bekannt 
ist.

Dieser Typ, wird als eine der letzten Befehle vor der main definiert, 
und zwar in Zeile 26383.

Nun meine Frage, warum funktioniert das mit g++ und nicht mit dem Keil 
Compiler?

Robert

Autor: hp-freund (Gast)
Datum:

Diesen Beitrag bewerten:
lesenswert
nicht lesenswert
Vielleicht hilft das:
http://stackoverflow.com/questions/10469896/error-...

Falls der Beitrag nicht von Dir war ;-)

Autor: Robert (Gast)
Datum:

Diesen Beitrag bewerten:
lesenswert
nicht lesenswert
;-)

Autor: hp-freund (Gast)
Datum:

Diesen Beitrag bewerten:
lesenswert
nicht lesenswert
Und das ändern der Reihenfolge bringt nichts?

Autor: Rolf Magnus (rmagnus)
Datum:

Diesen Beitrag bewerten:
lesenswert
nicht lesenswert
Robert schrieb:
> Nun meine Frage, warum funktioniert das mit g++ und nicht mit dem Keil
> Compiler?

Hmm, ich bin mir  nicht sicher (das ist ein recht komplizierter Teil von 
C++), aber man möge mich korrigieren, wenn folgendes falsch ist:
Wenn ich es richtig verstehe, müßte der Typ erst bei der Instanziierung 
und noch nicht bei der Definition des Templates vollständig sein, da er 
von einem Template-Argument abhängt. Nur unabhängige Typen müssen an der 
Stelle der Template-Definition vollständig sein, abhängige Typen erst 
bei der Instanziierung. Es müßte das sogenannte two-phase-lookup 
stattfinden, das im Keil-Compiler möglicherweise nicht oder falsch 
implementiert ist.

Antwort schreiben

Die Angabe einer E-Mail-Adresse ist freiwillig. Wenn Sie automatisch per E-Mail über Antworten auf Ihren Beitrag informiert werden möchten, melden Sie sich bitte an.

Wichtige Regeln - erst lesen, dann posten!

  • Groß- und Kleinschreibung verwenden
  • Längeren Sourcecode nicht im Text einfügen, sondern als Dateianhang

Formatierung (mehr Informationen...)

  • [c]C-Code[/c]
  • [avrasm]AVR-Assembler-Code[/avrasm]
  • [code]Code in anderen Sprachen, ASCII-Zeichnungen[/code]
  • [math]Formel in LaTeX-Syntax[/math]
  • [[Titel]] - Link zu Artikel




Bitte das JPG-Format nur für Fotos und Scans verwenden!
Zeichnungen und Screenshots im PNG- oder GIF-Format hochladen.
Siehe Bildformate
Hinweis: der ursprüngliche Beitrag ist mehr als 6 Monate alt.
Bitte hier nur auf die ursprüngliche Frage antworten,
für neue Fragen einen neuen Beitrag erstellen.

Mit dem Abschicken erkennst du die Nutzungsbedingungen an.

webmaster@mikrocontroller.netImpressumNutzungsbedingungenWerbung auf Mikrocontroller.net