expected expression?



  • Hallo ich habe bei mir folgendes Problem damit:

    cr = arg;
        car = (car*)malloc(sizeof(car));
    

    in der Zeile wo ich den Speicher reserviere kommt folgende fehlermeldung:

    Fehler: expected expression before >>)<< token.

    was ist daran falsch?

    Lg aus Baden Baden



  • Was ist car? Eine Variable oder ein Typ?

    Ausserdem castet man den Rückgabewert von malloc nicht!



  • SG1 schrieb:

    Was ist car? Eine Variable oder ein Typ?

    Ausserdem castet man den Rückgabewert von malloc nicht!

    hallo, danke erstmal, was heißt das genau?

    car ist ein struct:

    [cs]typedef struct str_car
    {
    int speed;
    char richtung;
    } car;



  • Also ein Typ. Dann solltest Du erstmal eine Variable vom Typ car* erstellen - car selber kannst Du nichts zuweisen!



  • Meister Eder schrieb:

    SG1 schrieb:

    Was ist car? Eine Variable oder ein Typ?

    Ausserdem castet man den Rückgabewert von malloc nicht!

    hallo, danke erstmal, was heißt das genau?

    Das heißt, dass du anstatt

    xyz = (car*) malloc (...);
    
    xyz = malloc (...);
    

    schreibst.

    Dein Fehler liegt übrigens darin, dass car keine Variable ist, sondern ein Typ.

    Richtig wäre:

    typedef struct str_car {
        int speed;
        char richtung;
    } car;
    
    int main () {
        car *bmw;
        bmw = malloc (sizeof (*bmw));
        ...
        free (bmw);
        return 0;
    }
    


  • Ah danke! sehr fein!

    gut jetzt hab ich einen fehler beim makefile ausführen..

    mark@desktop:~/Desktop/Cars$ make all
    gcc -lpthread -o main.c
    /usr/lib/gcc/i486-linux-gnu/4.3.3/../../../../lib/crt1.o: In function _start': /build/buildd/glibc-2.9/csu/../sysdeps/i386/elf/start.S:115: undefined reference tomain'
    collect2: ld gab 1 als Ende-Status zurück
    make: *** [main.o] Fehler 1

    was soll das jetzt genau heißen? muss ich da irgendein paket installieren?

    file schaut so aus:

    all: cars
    
    #Kompillieren der Main
    main.o: main.c header.h
    	$(CC) -lpthread -o main.c
    

    danke schon im voraus



  • Meister Eder schrieb:

    /build/buildd/glibc-2.9/csu/../sysdeps/i386/elf/start.S:115: undefined reference to `main'

    ich schätze mal, du hat keine 'main' funktion, oder die datei nicht ins projekt eingebunden.
    🙂



  • +fricky schrieb:

    Meister Eder schrieb:

    /build/buildd/glibc-2.9/csu/../sysdeps/i386/elf/start.S:115: undefined reference to `main'

    ich schätze mal, du hat keine 'main' funktion, oder die datei nicht ins projekt eingebunden.
    🙂

    hm also main funktion hab ich und die datei heißt auch main.c ..
    was meinst du nicht ins projekt eingebunden? gibts under linux sowas wie "projekt"? oder ist da was mit dem makefile?



  • Meister Eder schrieb:

    hm also main funktion hab ich und die datei heißt auch main.c ..
    was meinst du nicht ins projekt eingebunden? gibts under linux sowas wie "projekt"?

    naja, ich hab dein makefile übersehen.

    Meister Eder schrieb:

    oder ist da was mit dem makefile?

    könnte schon sein, irgendwie spaces mit tabs vertauscht oder sowas. probier doch mal ohne makefile: gcc -lpthread main.c -o main
    wenn das so geht, dann liegts am makefile.
    🙂


Anmelden zum Antworten