missing semikolon



  • #include <string.h>
    #include "strip.h"
    #include <stdio.h>
    
    char* strip(char* str)
    {	
    	int len = 0;
    
    	while (str[len] != '\0')
    	{
    		len++;
    	}
    	int k;
    	return str;
    }
    
    TestResult test_strip()
    {
    	char str[] = "/usr//bin///env";	//example string
    	char* p = strip(str);
    	return (strcmp("/usr/bin/env", p)? NOT_OK : OK);
    }
    

    In Zeile 13 gibt es folgenden Fehler:
    error C2143: syntax error : missing ';' before 'type'
    Ich finde jedoch absolut nicht die Stelle an der das ';' fehlen soll.
    Was genau ist das Problem hier?



  • Compiler?
    File-Extension?
    Vielleicht MSVC im "C" Modus?


  • Mod

    hustbaer schrieb:

    Vielleicht MSVC im "C" Modus?

    Die Fehlermeldung und der Code sehen sehr nach C mit MSVC aus, also vermutlich ja. Erkärung für den Threadersteller: MSVC kann nur den C89-Standard und wird auch nie mehr können. Variablendefinitionen mitten im Block sind erst ab C99 Teil des Standards.

    P.S.: Deine strip-Funktion macht übrigens auf umständliche Weise überhaupt gar nichts.



  • Das diese Funktion nichts macht ist mir bewusst, denn der Fehler hat weiteres Arbeiten verhindert ;).
    Woran kann man denn sehen, dass MSVC im C Modus ist?
    ich benutze MSVC 2008 express edition
    Das File besitzt die Endung .c, bedeutet das, dass das File im C Modus ausgeführt wird?
    edit:
    Es scheint das Problem in jedem Fall gewesen zu sein, denn nun funktioniert alles wie es soll.
    Danke



  • Ja, MSVC verwendet die File-Extension.
    Man kann die Sprache aber über Switches ändern.

    http://msdn.microsoft.com/en-us/library/032xwy55.aspx


  • Mod

    Wobei C hier schon richtig ist, schließlich programmierst du C. Der unterstützte C-Sprachstandard des MSVC ist nun einmal nur C89, da ändern auch keine Schalter etwas dran.


Log in to reply