Fehlerbildung beim Umstieg auf andere IDE



  • Guten Tag an alle 🙂

    Habe folgendes Problem:

    Ich bin die Tage von Dev C++ auf Code::Blocks umgestiegen und bekomme auf einmal in meinem momentanen Projekt Fehlermeldungen:

    C:\Dokumente und Einstellungen\xxx\Desktop\Für Alles\cpp\md5hash\md5.h:60: error: syntax error before "MD5"
    C:\Dokumente und Einstellungen\xxx\Desktop\Für Alles\cpp\md5hash\md5.h:61: error: syntax error before '{' token
    C:\Dokumente und Einstellungen\xxx\Desktop\Für Alles\cpp\md5hash\md5.h:71: error: syntax error before ':' token
    C:\Dokumente und Einstellungen\xxx\Desktop\Für Alles\cpp\md5hash\md5.h:77: warning: return type defaults to `int'
    C:\Dokumente und Einstellungen\xxx\Desktop\Für Alles\cpp\md5hash\md5.h:78: error: syntax error before '}' token
    In file included from C:\Dokumente und Einstellungen\xxx\Desktop\Für Alles\cpp\md5hash\main.c:4:
    C:\Dokumente und Einstellungen\xxx\Desktop\Für Alles\cpp\md5hash\md5wrapper.h:21: error: syntax error before "MD5"

    Die (aus meiner Sicht) relevante Codestelle (da es anscheinend hier keine Spoiler gibt^^):

    md5.h:

    class MD5
    {
    
    	private:
    
    		void MD5Transform (unsigned int state[4], unsigned char block[64]);
    		void Encode (unsigned char*, unsigned int*, unsigned int);
    		void Decode (unsigned int*, unsigned char*, unsigned int);
    		void MD5_memcpy (POINTER, POINTER, unsigned int);
    		void MD5_memset (POINTER, int, unsigned int);
    
    	public:
    
    		void MD5Init (MD5_CTX*);
    		void MD5Update (MD5_CTX*, unsigned char*, unsigned int);
    		void MD5Final (unsigned char [16], MD5_CTX*);
    
    	MD5(){};
    };
    

    md5wrapper.h:

    class MD5;
    

    Die Header und Cpp-Datein md5wrapper und md5 sind net von mir (<-newbie^^) aber wiegesagt, unter Dev funktioniert alles einwandfrei.

    Compiler ist einfach GNU GCC.

    Danke schonmal im vorraus, sehe wahrscheinlich den Wald vor lauter Bäumen netmehr.

    LG
    Strongapple



  • Hast du das komplette Projekt umgezogen? Projekteinstellungen, Linkerparameter usw. überprüft?



  • Dieser Thread wurde von Moderator/in pumuckl aus dem Forum C++ in das Forum Compiler- und IDE-Forum verschoben.

    Im Zweifelsfall bitte auch folgende Hinweise beachten:
    C/C++ Forum :: FAQ - Sonstiges :: Wohin mit meiner Frage?

    Dieses Posting wurde automatisch erzeugt.



  • Ich hab zwar nicht wirklich Ahnung, aber es schaut mir sehr danach aus, als ob die IDE den Compiler für C-Code benutzt, anstatt den für C++. Vielleicht musst man ihm das noch irgendwie mitteilen.

    Bis denne



  • In file included from C:\Dokumente und Einstellungen\xxx\Desktop\Für Alles\cpp\md5hash\main.c:4:

    Mach mal aus der main.c ein main.cpp.



  • Danke schonmal, das mit cpp hört sich logisch an (Bei Code::Blocks heißt .c "C/C++ Datei" -.-)

    Jetzt kommen aber neue Fehlermeldungen 😮

    Najia, ihr habt mich auf den richtigen Pfad gelenkt, schau jetzt mal alle Settings durch (wobei ich dabei seid einer Std nix gefunden hab was irgendwie anders ist).

    Danke nochmal :).



  • Strongapple schrieb:

    md5.h:

    class MD5
    {
    
    	private:
    
    		void MD5Transform (unsigned int state[4], unsigned char block[64]);
    		void Encode (unsigned char*, unsigned int*, unsigned int);
    		void Decode (unsigned int*, unsigned char*, unsigned int);
    		void MD5_memcpy (POINTER, POINTER, unsigned int);
    		void MD5_memset (POINTER, int, unsigned int);
    
    	public:
    
    		void MD5Init (MD5_CTX*);
    		void MD5Update (MD5_CTX*, unsigned char*, unsigned int);
    		void MD5Final (unsigned char [16], MD5_CTX*);
    
    	MD5(){};
    };
    

    mal davon abgesehen, wieso packst du sowas nochmal so umständlich in eine klassenhülle ohne funktionalität? MD5_CTX ist doch schon sowas wie'ne 'klasse', MD5Init() entspricht einem Konstruktor und MD5Final() ist in etwa sowas wie ein Destruktor. wenn du c++ daraus basteln willst, dann bau dir doch 'ne klasse, die alles aus MD5_CTX als (private) attribute enthält, mach aus MD5Init 'nen konstruktor usw., etwa so:

    class MD5
    {
       // MD5_CTX members 
       private:
       ...
       // MD5 interne funktionen
       transform (...);
       ...
    
       // Interface
       public:
       MD5();   // konstruktor, entspricht MD5Init()
       Update (unsigned char*, unsigned int);  // MD5Update()
       GetResult (unsigned char [16]);  // MD5Final()
    };
    

    ^^oder hat C++ wieder jemanden zum zu komplizierten denken verführt?
    🙂



  • Ein guter C++ Programmierer packt grundsätzlich jede funktion in eine klasse, denn sonst ist es nicht objekt orientiert und deswegen schlecht. Das solltest du eigentlich wissen, fricky.


Anmelden zum Antworten