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.