Fehler in Deklarationssyntax???



  • Hallo zusammen!

    Ich hab gerade von meinem Compiler (IDE: BCB6) eine Fehlermeldung erhalten, auf die ich mir wirklich beim besten Willen keinen Reim machen kann!
    (mit dem BCB5 hatte ich nie Schwierigkeiten)
    Wäre schön, wenn mir jemand helfen könnte!

    Angenommen ich hätte eine stinknormale Konsolenanwendung erzeugt:
    Main.cpp:

    #include <vcl.h>
    #pragma hdrstop
    #pragma argsused
    
    #include "TTempClass.h"
    
    int main(int argc, char* argv[])
    {
       TTempClass obj;
       return 0;
    }
    

    Includet wird unter anderem die Headerdatei einer Klasse mit der Bezeichnung: 'TTempClass'

    #ifndef TEMP_CLASS_H
    #define TEMP_CLASS_H
    
    #include "gl\gl.h"
    
    class TTempClass
    {
       public:
       TTempClass();
       ~TTempClass();
    };
    
    #endif
    

    Selbst die Quellcodedatei sieht in diesem Beispiel sehr langweilig aus:

    #include "TTempClass.h"
    
    TTempClass::TTempClass(){}
    TTempClass::~TTempClass(){}
    

    Beim Übersetzen meldet mir jetzt mein lieber BorlandCompiler, dass ein Fehler in der Deklarationssyntax der Header Datei 'gl.h' vorliegen würde!
    Er zeigt dabei auf folgende Stelle:

    ...... jede Menge Definitions ........
    
    WINGDIAPI void APIENTRY glAccum (GLenum op, GLfloat value); // <=== exakt hier
    WINGDIAPI void APIENTRY glAlphaFunc (GLenum func, GLclampf ref);
    WINGDIAPI GLboolean APIENTRY glAreTexturesResident (GLsizei n, const GLuint *textures, GLboolean *residences);
    
    ......... usw. .........
    

    Die dazugehörige Meldung lautet:
    [C++ Fehler] gl.h(1152) E2141 Fehler in der Deklarationssyntax
    [C++ Fehler] gl.h(1152) E2238 Bezeichner 'WINGDIAPI' mehrfach deklariert

    ==> Und das kann ich ehrlich gesagt überhaupt nicht nachvollziehen!
    Noch einfacher kann man doch eine Anwendung nicht mehr stricken!

    Danke für evtl. Antworten!

    Grüße,
    TS++


  • Mod

    include im cpp mit dem main mal <windows.h> ich glaube das hat bei mir mal diesen fehler verursacht.

    rapso->greets();



  • das beispiel konnte man sicherlich noch viel einfacher machen. aber vielleicht liegt es daran: du machst #pragma hdrstop und bindest dannach doch noch einen header ein



  • Danke für eure Antworten!
    Der Fehler tritt aber leider immer noch auf!
    Selbst, wenn ich beide Vorschläge umsetze:

    #include <vcl.h>
    #include <windows.h>
    #include "TTempClass.h"
    
    #pragma hdrstop
    #pragma argsused
    
    int main(int argc, char* argv[])
    {
       TTempClass obj;
       return 0;
    }
    

    Das ist doch nicht zu fassen! Und dieses Problem tritt wirklich immer nur mit 'gl.h' auf! 😡

    Grüße,
    TS++


  • Mod

    vielleicht das include windows direkt vor dem include gl/gl.h ...

    rapso->greets();



  • #include <vcl.h> 
    #include <windows.h> 
    #include "gl\gl.h"
    #pragma hdrstop 
    #pragma argsused 
    
    int main(int argc, char* argv[]) 
    { 
       return 0; 
    }
    


  • #include <windows.h>  
    #include "gl\gl.h" 
    
    int main() {  
       return 0;  
    }
    


  • Yippiejajeiiihhhhhh!!! 😃
    "#include <windows.h>" vor "#include "gl\gl.h""
    => Das hat's tatsächlich gebracht! Funktioniert!

    Danke euch beiden!

    Ach übriges:
    @rapso: hast du dir schon mal die Dissertation von Kurka angeschaut?
    Ich weiss, ist etwas umfangreich! Aber interessant! Hat's was gebracht?

    Grüße,
    TS++



  • TS: Könntest du dir vielleicht das T vor dem Klassennamen abgewöhnen? 😃
    Das sieht nämlich extrem dämlich aus.



  • Anonymous schrieb:

    TS: Könntest du dir vielleicht das T vor dem Klassennamen abgewöhnen? 😃
    Das sieht nämlich extrem dämlich aus.

    Das hat man mir schon so oft gesagt. Ist eine reine Gewohnheitssache!
    Ich lass das 'T' erst weg, wenn alle Microschuft-Programmierer das 'C' vor dem Klassennamen weglassen! 😉

    Grüße,
    TS++


Anmelden zum Antworten