interessanter Kommentar-Fehler



  • Hi,

    Ich habe einen seltsamen Compiler-Fehler bei Kommentaren.
    Bei einer bestimmten Funktion ist es mir nicht möglich, '//'-Kommentare zu setzen, sondern nur '/* */'-Kommentare.
    Wenn ich es doch tue, kommt folgender Fehler:

    Fehler	1	error C2143: Syntaxfehler: Es fehlt ';' vor '{'	c:\users\alex\documents\visual studio 2013\projects\rs\rs\main.c	5	1	RS
    
    Fehler	2	error C1075: Dateiende erreicht, bevor das zugehörige Element für das linke Element Klammer '{' in "c:\users\alex\documents\visual studio 2013\projects\rs\rs\aufg3.h(23)" gefunden wurde
    

    Bsp.:

    unsigned int lower_and_compare(char* str1, char* str2)
    {
    	unsigned int result = 0;
    	//FEHLER
    	lower(str1);
    	lower(str2);
    
    	//FEHLER
    	for (; (*str1 != '\0') && (*str1 == *str2); str1++, str2++)
    		++result;
    
    	return result;
    }
    
    unsigned int lower_and_compare(char* str1, char* str2)
    {
    	unsigned int result = 0;
    	/* FUNKTIONIERT */
    	lower(str1);
    	lower(str2);
    
    	/* FUNKTIONIERT */
    	for (; (*str1 != '\0') && (*str1 == *str2); str1++, str2++)
    		++result;
    
    	return result;
    }
    

    In anderen Funktionen kann ich ganz normal Kommentare setzen.
    Ich nutze Visual Studio 2013 professional (C-Modus)

    Hat jemand so etwas schonmal gesehen??
    mfg



  • Jetzt funktioniert es.
    Ich habe VS beendet, neu gestartet und das Projekt neu geladen.
    Dann kam die Meldung 'Zeilenenden sind nicht konsistent' und ich musste mich für CR/LF entscheiden für Windows.. jetzt geht es.

    Vielleicht weiß ja trotzdem jemand, was dahinter steckt / wie das passieren konnte. Wäre schon interessant zu wissen, weil der Fehler nicht leicht zu finden war 😃


  • Mod

    Anscheinend wurde dein Zeilenende nicht als Zeilenende erkannt, das heißt, deine Datei sah für den Compiler effektiv so aus:

    unsigned int lower_and_compare(char* str1, char* str2){    unsigned int result = 0;    //FEHLER    lower(str1);    lower(str2);    //FEHLER    for (; (*str1 != '\0') && (*str1 == *str2); str1++, str2++)        ++result;    return result;}
    

    Was dann nicht so ganz passt 🙂

    Dahinter steckt:
    https://en.wikipedia.org/wiki/Newline#Common_problems



  • Stimmt!Ich habe den Funktionsprototypen aus einer Textdatei kopiert, die unter Linux geschrieben wurde.. Das erklärt einiges 🙂
    Danke!


Anmelden zum Antworten