Je suis tring pour créer un programme qui reçoit des valeurs entières et les convertit en entiers complément de 2 en utilisant atoi, et détermine quel type de tour a été fait. Voici mon code:erreur: redeclaration de 'y2' sans lien
#include <stdio.h>
#include <stdlib.h>
int turn(int turn, int a1, int b1, int a2, int b2, int a3, int b3){
;
turn = ((a1 * b1 + b1 * a3 + a2 * a3) - (b2 * a3 + a1 * b3 + a2 * b1));
printf("\n value = %d \n", turn);
return(turn);
}
int main(int argc, char *argv[]) {
int x1, y2, x2, y2, x3, y3, turn;
x1 = atoi(argv[1]);
y1 = atoi(argv[2]);
x2 = atoi(argv[3]);
y2 = atoi(argv[4]);
x3 = atoi(argv[5]);
y3 = atoi(argv[6]);
turn = turn(x1, y1, x2, y2, x3, y3);
if(turn == 0) printf("\n Straight \n");
if(turn < 0) printf("\n Right Turn \n");
if(turn > 0) printf("\n Left Turn \n");
return 0 ;
}
Et mes erreurs:
make -k p3
cc p3.c -o p3
p3.c: In function ‘main’:
p3.c:29:19: error: redeclaration of ‘y2’ with no linkage
p3.c:29:11: note: previous declaration of ‘y2’ was here
p3.c:32:3: error: ‘y1’ undeclared (first use in this function)
p3.c:32:3: note: each undeclared identifier is reported only once for each function it appears in
p3.c:38:14: error: called object ‘turn’ is not a function
make: *** [p3] Error 1
Compilation sorti anormalement avec le code 2 au 22 septembre Sun 20:07:02"
Je me demande la cause de cette erreur.
Merci,
L'utilisation de «tour» pour un nom de fonction et un nom d'argument est au mieux «poisson». L'utilisation de cet argument comme variable locale est encore moins salutaire. Vous forcez l'appelant à tourner() à prouver un premier argument qui n'est pas utilisé pour passer ou renvoyer une valeur, juste pour ne pas avoir à déclarer une variable locale pour contenir le résultat avant de le renvoyer. Je suggère que vous preniez "virage" hors de la liste d'arguments, et déclariez plutôt une variable locale, de préférence avec un nom différent. –
c'est étrange que la fonction de tour compile. turn peut être un pointeur de fonction et provoquer un problème d'affectation à lvalue. Le virage à l'extérieur crée également une erreur dans le principal –