Compilerwarnung: Es wurde ein ein Ausdruck erwartet, Syntaxfehler {



  • Hallo,
    bin neu bei C und komme mit einer Übungsaufgabe nicht weiter. Hier der Code:

    /* file employee.h */
    #ifndef employee_h
    #define employee_h
    typedef struct emp_struct
    {
    	char name[100];
    	int employee_no;
    	float salary, tax_to_date;
    } Employee;
    typedef Employee* Database[10];
    int comp_employee(int* database[], int i, int j);
    void swap_employee(int* data[], int i, int j);
    void init_database(Database employees);
    void print_database(Database people, int no_employees);
    #endif /* employee_h */
    
    /* file sort.h */
    #ifndef sort_h
    #define sort_h
    typedef int (*comp_ptr) (int* data[], int s, int t);
    typedef void (*swap_ptr) (int* data[], int s, int t);
    void sort(int* data[], int n, comp_ptr compare, swap_ptr swap);
    #endif /* sort_h */
    
    #include "sort.h"
    #include "employee.h"
    
    #include <stdio.h>
    
    int comp_employee(int* database[], int i, int j)
    {
    
    }
    
    void swap_employee(int* database[], int i, int j)
    {
    
    }
    
    void sort(int* data[], int n, comp_ptr compare, swap_ptr swap)
    {
    
    }
    
    void init_database(Database people)
    {
    	*people = { {"Fred", 10, 10000, 3000}, 
    	{"Jim", 9, 12000, 3100.5},
    	{"Fred", 13, 1000000, 30},
    	{"Mary", 11, 170000, 40000},
    	{"Judith", 45, 130000, 50000},
    	{"Nigel", 10, 5000, 1200},
    	{"Trevor", 10, 20000, 6000},
    	{"Karen", 10, 120000, 34000},
    	{"Marianne", 10, 50000, 12000},
    	{"Mildred", 10, 100000, 30000}
    	};               /*Compilerwarnung "Es wurde ein Ausdruck erwartet" und " "Syntaxfehler {".
    }
    
    void print_database(Database people, int no_employees)
    {
    /*	Employee temp_emp;
    	for (int i = 0; i < no_employees; i++)
    	{
    		temp_emp = people[i];
    		printf("%d.ter Angestellter:\n\t Name: %s, Nummer: %d, Gehalt: %f", i, temp_emp.name, temp_emp.employee_no, temp_emp.salary);
    	}*/
    }
    
    void main(int argc, char* argv[])
    {
    	const int no_employees = 10; 
    	Database people;
    	init_database(people);
    	print_database(people, no_employees);
    	//sort((int**)people, no_employees, comp_employee, swap_employee);
    	print_database(people, no_employees);
    }
    


  • Ahjaja, sehr interessant.



  • Der Typedef ist verwirrend. Vermeide typedefs mit Arrays! Siehe https://stackoverflow.com/questions/4523497/typedef-fixed-length-array

    Deine Syntax funktioniert nur direkt zusammen mit der Definition der Variablen.

    Schau dir mal dieses Programm an:

    int main() {
        // geht
        int a[2] = {0, 1};
    
        // geht nicht
        int b[2];
        b = {0, 1};
    }
    


  • Sorry, hab die Frage vergessen.
    Die Compilerwarnung steht als Kommentar im Code: "Es wurde ein Ausdruck erwartet" und " "Syntaxfehler {". Ich bin schon dahintergekommen, dass people ja ein Array von Zeigern ist. Allerdings weiß ich nicht, wie ich ihnen Werte zuweisen kann..



  • Hmmm.. Das Programm ist eine Übungsaufgabe aus einem Skript. Ich denke ich werde mit einer anderen Quelle weiterarbeiten. Hab inzwischen aus mehreren Quellen gehört, dass das Skript nicht so gut sein soll..
    Danke für die Antworten!



  • @H-P-Wurst sagte in Compilerwarnung: Es wurde ein ein Ausdruck erwartet, Syntaxfehler {:

    Die Compilerwarnung steht als Kommentar im Code

    Warum? Copy&Paste der vollständigen Fehlermeldung ausserhalb des Codes!


Log in to reply