in konflikt stehende Typen



  • Hallo Community 😃

    Ich habe folgendes Problem: Ich bekomme beim Compilieren folgende Fehler:
    main.c:66:6: error: conflicting types for 'erstelleFertigenCode'
    void erstelleFertigenCode(int bit_liste[],int binaerPosListe[][BREITE])
    ^
    main.c:17:1: note: previous implicit declaration is here
    erstelleFertigenCode(bit_liste1,binaerPosListe);
    ^
    main.c:74:6: error: conflicting types for 'paritaetBitsVergleichen'
    void paritaetBitsVergleichen(int bit_liste1[],int bit_liste2[])
    ^
    main.c:23:1: note: previous implicit declaration is here
    paritaetBitsVergleichen(bit_liste1,bit_liste2);

    finde aber den Fehler nicht.
    Hier der Quellcode:

    #include <stdio.h>
    #include <stdlib.h>
    #define LAENGE 12
    #define BREITE 4
    
    void binaerPosEintragen (int [LAENGE],int [][BREITE]); // P1 = Daten, P2 = Ziel
    
    void main()
    {
    
    int bit_liste1[LAENGE] = {-1,-1,1,-1,0,1,0,-1,1,0,0,1};
    int bit_liste2[LAENGE] = {-1,-1,1,-1,0,1,0,-1,1,0,0,1};
    int binaerPosListe[4][BREITE];
    
    // Code zum senden berechnen
    binaerPosEintragen(bit_liste1,binaerPosListe);
    erstelleFertigenCode(bit_liste1,binaerPosListe);
    // Empfangener Code berechnen
    binaerPosEintragen(bit_liste2,binaerPosListe);
    erstelleFertigenCode(bit_liste2,binaerPosListe);
    
    // Codes vergleichen
    paritaetBitsVergleichen(bit_liste1,bit_liste2);
    
    }
    
    // Binär Positionen in Liste b eintragen
    void binaerPosEintragen (int liste[LAENGE],int binaerPosListe[3][BREITE]) // P1 = Daten, P2 = Ziel
    {
    	int bin_liste[LAENGE][BREITE] = 
    	{
    		{0,0,0,1}, //1
    		{0,0,1,0}, //2
    		{0,0,1,1}, //3
    		{0,1,0,0}, //4
    		{0,1,0,1}, //5
    		{0,1,1,0}, //6
    		{0,1,1,1}, //7
    		{1,0,0,0}, //8
    		{1,0,0,1}, //9
    		{1,0,1,0}, //10
    		{1,0,1,1}, //11
    		{1,1,0,0}  //12
    	};
    
    	int i,j;
    	int k = 0;
    	liste[0] = -1;
    	liste[1] = -1;
    	liste[3] = -1;
    	liste[7] = -1;
    
    	for(i = 0; i < LAENGE; i++)
    	{
    		if(liste[i] == 1)
    			for(j = 0; j < BREITE && k < 4; j++) {
    				binaerPosListe[k][j] = bin_liste[i][j];
    			}
    			if(liste[i] == 1)
    				k++;
    	}
    }
    
    // 4 Paritätsbits berechnen und in Liste eintragen. Code ist vollständig.
    void erstelleFertigenCode(int bit_liste[],int binaerPosListe[][BREITE])
    {
    	bit_liste[0] = binaerPosListe[0][0] ^ binaerPosListe[1][0] ^ binaerPosListe[2][0];
    	bit_liste[1] = binaerPosListe[0][1] ^ binaerPosListe[1][1] ^ binaerPosListe[2][1];
    	bit_liste[3] = binaerPosListe[0][2] ^ binaerPosListe[1][2] ^ binaerPosListe[2][2];
    	bit_liste[7] = binaerPosListe[0][3] ^ binaerPosListe[1][3] ^ binaerPosListe[2][3];
    }
    
    void paritaetBitsVergleichen(int bit_liste1[],int bit_liste2[])
    {
    	int p1,p2,p3,p4;
    	int erg = 0,i;
    	p1 = bit_liste1[0] ^ bit_liste2[0];
    	p2 = bit_liste1[1] ^ bit_liste2[1];
    	p3 = bit_liste1[3] ^ bit_liste2[3];
    	p4 = bit_liste1[7] ^ bit_liste2[7];
    
    	if(p1||p2||p3||p4)
    		printf("Fehler an Stelle: \n%i %i %i %i\n",p4,p3,p2,p1);
    	else
    		printf("Kein Fehler: \n%i %i %i %i\n",p4,p3,p2,p1);
    
    	erg = erg + p1*1;
    	erg = erg + p2*2;
    	erg = erg + p3*4;
    	erg = erg + p4*8;
    
    	printf("%i\n",erg);
    }
    

    Schonmal Danke



  • Du brauchst Deklarationen für erstelleFertigenCode und paritaetBitsVergleichen



  • Oder du definierst die Funktionen vor dem ersten Aufruf.

    Der Compiler versucht aus Zeile 17 die PAramterliste zu erkennen. Als Rückgabewert nimmt er als Default int.


Anmelden zum Antworten