Seltsamer Fehler in Windef.h. Kann jemand helfen?

Gast #5605864
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 */

....
....
#5605866
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.
Gast #5605868
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 :-(
Gast #5606825
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

Bitte melde dich an, um einen Beitrag zu schreiben.

oder

Mit Google-Account einloggen

Die Registrierung ist kostenlos und dauert nur eine Minute.

Jetzt registrieren