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.