Forum: PC-Programmierung Seltsamer Fehler in Windef.h. Kann jemand helfen?


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.
von Baric (Gast)


Bewertung
0 lesenswert
nicht lesenswert
Hallo zusammen,
ich benutze den BuilderC++ 6.0 um eine Embedded-Application zu 
simulieren. Es ging alles geht gut. Nach ein paar Änderung in der 
Embedded-App meldet der Compiler auf ein mal einen Fehler den ich nicht 
lokalisieren kann und zwar in der Windef.h wtypes.h winsmcrd.h. Es wäre 
schön wenn der Compiler den Fehler in meinen Source code zeigen konnte. 
Leider an Windef.h wo ich nichts ändern soll. Hat jemand eine Idee?
Danke für jede Hilfe.
Gruß
Baric

E2146 Bezeichner zur Vervollständigung der Deklaration erforderlich
E2146 zu Viele Typen in der Deklaration
an der Stelle wo die Datentypen neu definiert sind:

windef.h
....
....
#ifndef BASETYPES
#define BASETYPES
typedef unsigned long ULONG;
typedef ULONG *PULONG;
typedef unsigned short USHORT;
typedef USHORT *PUSHORT;
typedef unsigned char UCHAR;
typedef UCHAR *PUCHAR;
typedef char *PSZ;
#endif  /* !BASETYPES */

....
....

von Rolf M. (rmagnus)


Bewertung
0 lesenswert
nicht lesenswert
Ohne jetzt jegliche Information über die Zielplattform oder dein 
Programm zu haben, fallen mir zwei Möglichkeiten ein:

1. Der Fehler ist in einem Header, der vor diesem eingebunden wurde und 
bringt den Compiler erst dort ins Stolpern. Sowas passiert gerne mal, 
wenn man ein Semikolon oder eine Klammer vergessen hat. Dann ist suchen 
angesagt.

2. Die genannten Datentypen sind bereits irgendwo anders definiert 
worden, und jetzt kollidieren diese Typdefinitionen.

von Baric (Gast)


Bewertung
0 lesenswert
nicht lesenswert
Danke für den Hinweis.
Die 2te Möglichkeit ist ausgeschlossen da ich alle neu Definitionen von 
Datentypen bewusst vermieden hab.
Ist eher die 1te Möglichkeit. Ich werde alle Header durchsuchen 
hoffentlich finde ich was :-(

von Irgendwer (Gast)


Bewertung
0 lesenswert
nicht lesenswert
3.) du hast irgendwo vergessen zuvor die windows.h einzubinden. Die 
genaue Reihenfolge ist hier nicht immer beliebig.
Die windef.h wird eigentlich eher nicht direkt im eigen Code 
eingebunden.

von Baric (Gast)


Bewertung
0 lesenswert
nicht lesenswert
Ja. Tatsächlich es lag an windows.h. Weil der Compiler nicht die 
genauere Stelle gezeigt hat wo die Fehler verursacht wird, habe ich 
Modul für Modul compiliert bis der Fehler (nämlich E2146) aufgetaucht 
ist. Dort ist ein RTOS_Wrapper wo die Interttask-Kommunication für 
Windows bzw. Keil-RTX stattfindet. Mit dem Hinzufügen des Windows.h ist 
das Problem gelöst.
Vielen Dank an allen Beteiligten.
Gruß

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]
  • [code]Code in anderen Sprachen, ASCII-Zeichnungen[/code]
  • [math]Formel in LaTeX-Syntax[/math]
  • [[Titel]] - Link zu Artikel
  • Verweis auf anderen Beitrag einfügen: Rechtsklick auf Beitragstitel,
    "Adresse kopieren", und in den Text einfügen




Bild automatisch verkleinern, falls nötig
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 bestätigst du, die Nutzungsbedingungen anzuerkennen.