"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 😃


Anmelden zum Antworten