"Syntaxfehler: Es fehlt ';' vor 'Typ'" <-- bin am Verzweifeln...
-
Hallo,
ich versuche gerade ein Programm zur Analyse einer Datei zu schreiben und bin am Verzweifeln...
typedef struct { unsigned boot_indicator: 8; // active (0x80) or not (0x00) unsigned first_head: 8; // chs adresse of the beginning of unsigned first_sector: 6; // the first partition unsigned first_cylinder: 10; unsigned system_id: 8; // describes the file system unsigned last_head: 8; unsigned last_sector: 6; unsigned last_cylinder: 10; unsigned start_sector: 32; // first sector (LBA-mode) unsigned num_of_sectors: 32; // sector number of the 1st partition } entry_t; void parse_commandline(int argc, char *argv[], char **filename, char **device); int main(int argc, char *argv[]) { char *filename = NULL, *device = NULL; int fd = -1; entry_t* partition_table; parse_commandline(argc, argv, &filename, &device); char *buffer = (char*)calloc(512,sizeof(char)); return 0; }
[Das Programme habe ich jetzt schnell gekürzt...]
Möchte ich es unter Windows mit Visual Studio 2005 complieren, bekomme ich die Fehlermeldung: "Syntaxfehler: Es fehlt ';' vor 'Typ'".
Unter Linux verabschiedet sich das Programm mit einem Core-Dump....Vielen Dank für eure Hilfe!! :xmas1:
-
Achja, der Fehler tritt in der Zeile auf, in der ich den Buffer anlegen möchte...
-
Hast du für calloc auch den richtigen Header eingebunden?
-
Hi,
also Header habe ich ja genug
#include <stdio.h> #include <stdlib.h> #include <string.h> #include <errno.h> #include <sys/types.h> #include <sys/stat.h> #include <fcntl.h> // file control options
-
#include <stdlib.h> void parse(int argc) { } int main(int argc, char *argv[]) { parse(0); char *buffer = NULL; return 0; }
Jetzt weiß ich wirklich nicht mehr weiter... der Fehler bleibt erhalten, obwohl er doch eigentlich anstandslos compilieren sollte!?
-
Lukas_ schrieb:
#include <stdlib.h> void parse(int argc) { } int main(int argc, char *argv[]) { char *buffer = NULL; parse(0); return 0; }
Jetzt weiß ich wirklich nicht mehr weiter... der Fehler bleibt erhalten, obwohl er doch eigentlich anstandslos compilieren sollte!?
-
Hi,
ich weiß, dass es geht, wenn man die beiden Zeilen vertauscht, aber ich möchte ja wissen WARUM dies der Fall ist....
-
In C müssen Variablen am Anfang des Blockes deklariert werden. Der Aufruf von parse_commandline ist keine Deklaration, d.h. danach dürfen auch keine Deklarationen mehr kommen.
In C++ und dann auch C99 ist diese Einschränkung nicht mehr vorhanden.
Der Absturz unter Linux hat andere Gründe, die aus deinem geposteten Programm nicht hervorgehen.
-
der spam-filter lässt meine antwort nicht durch
-
Haha Spamfilter ftw