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 */ .... ....
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.
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 :-(
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.
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ß
Bitte melde dich an um einen Beitrag zu schreiben. Anmeldung ist kostenlos und dauert nur eine Minute.
Bestehender Account
Schon ein Account bei Google/GoogleMail? Keine Anmeldung erforderlich!
Mit Google-Account einloggen
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.