von c++ auf c - nur fehler



  • Hi Leute

    ich habe mit Visual C++ 6.0 einen Programmcode geschrieben und dabei drauf geachtet nur ANSI C Befehle zu verwenden. da VS 6.0 bei mir als neue Dateien nur .cpp erstellen kann, hab ich den Code einfach erstma da rein geschrieben um ihn später in eine .C datei zu kopieren.
    So den Code hab ich jetz rüber kopiert und aus einem Code mit 0 Fehlern wurde ein Code mit 70 Fehlern. Dabei handelt es sich um Fehler die ich nicht nachvollziehen kann.

    BSP: error C2143: Syntaxfehler : Fehlendes ';' vor 'type'. gemeint ist folgende codezeile

    char time_str[80];
    

    den programmcode den ich bis dahin geschrieben habe ist folgender

    void errorMessage(char *eMessage)
    		{
    			printf("%s\n", eMessage);		
    
    		}
    
    int protocol_UID(FILE *path,char *message,char *var)		
    {
    		if (path==NULL)
    		{	errorMessage("Fehler bei der Protokollierung");
    			return -1;
    		}
    
    		[b]char time_str[80];[/b]	//variable für Datum- und Zeitausgabe
    			//get date and time, output is formatted
    		struct tm *zeit;
    			time_t sekunde;
    			time(&sekunde);
    			zeit = localtime( &sekunde);
    			strftime(time_str, 80, "%d-%m-%Y %H:%M:%S", zeit);
    			//finished. date and time information in char str
    			//start: writing information in protokoll.log
    			fprintf(path, message,time_str, var);
    
    	return 0;
    }
    

    klammer ich die errorMessage() funktion aus, dann kommt der Fehler zwar nicht aber er meckert dann bei time(&sekunde); rum, konkret wegen dem & zeichen. wie kann denn das sein, dass plötzlich solche fehler kommen, obwohl es vorher doch fehlerfrei war?



  • xoosksicskoox schrieb:

    ich habe mit Visual C++ 6.0 einen Programmcode geschrieben und dabei drauf geachtet nur ANSI C Befehle zu verwenden. da VS 6.0 bei mir als neue Dateien nur .cpp erstellen kann, hab ich den Code einfach erstma da rein geschrieben um ihn später in eine .C datei zu kopieren.

    Befehle? Das ist doch nicht Basic. 🙂

    BSP: error C2143: Syntaxfehler : Fehlendes ';' vor 'type'. gemeint ist folgende codezeile

    char time_str[80];
    

    Du hast nicht bedacht, dass in C (genauer: C89) alle Variablen vor der ersten Anweisung deklariert werden müssen. Alle weiteren Deklarationen werden nicht als solche erkannt.

    er meckert dann bei time(&sekunde); rum, konkret wegen dem & zeichen.

    Was sagt er denn?

    wie kann denn das sein, dass plötzlich solche fehler kommen, obwohl es vorher doch fehlerfrei war?

    Es war vorher in C++ fehlerfrei, aber nicht in C. Manche glauben zwar, C sei sowas wie schlecht geschriebenes C++, aber tatsächlich ist C eine Programmiersprache, die wie alle Programmiersprachen ihre eigenen Regeln hat.



  • ja, wenn ich alles vorher deklariere fällt echt sehr viel der fehler weg. vllt ist das schon die lösung... 🙂
    ich änder das mal kurz ab.

    ja klar ist C ne eigene sprache, ich habe aber nur C++ gelernt und da macht man doch noch vieles falsch. und weil es einem "richtig" erscheint kommt auch nur schwer dahinter was eig falsch ist 😉



  • einzigster fehler(eigentlich nur eine warnung) der jetz noch kommt ist
    *warning C4047: '!=' : Anzahl der Dereferenzierungen bei 'int ' und 'void ' unterschiedlich
    bei

    if(feof(ptrcode_file)!=NULL)
    

    ist der befehl nicht zulässig bei c?



  • Du solltest das als

    if (feof(ptrcode_file))
    

    schreiben. NULL steht für eine Nullpointerkonstante, die passt hier nicht hin.



  • feof liefert ein int zurück (auch in C++)
    NULL ist aber eine Konstante für einen ungültigen Zeiger.
    In C kann die auch vom Typ void* sein.



  • okay danke sehr


Anmelden zum Antworten