2013-09-23 1 views
1

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,

+0

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. –

+0

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 –

Répondre

1

les erreurs que vous obtenez sont exactement ce que le message est vous dire.

  • Vous déclarez votre variable y2 deux fois
  • Vous n'avez pas déclaré y1 nulle part
  • Vous ne pouvez pas avoir deux membres du même nom comme celui-ci. Vous avez une variable turn qui a le même nom que votre fonction turn.
+0

merci .. accidentellement déclaré y2 deux fois au lieu de y2 et y1. – user190494

1

Avant principale() dans la Déclaration d'int Turn(); Vous avez quelque chose comme ça int Turn() {; qui doit être {ou;

Dans Main(), vous avez déclaré Y2 deux fois et l'une d'entre elles doit être Y1.

NOTE: APRÈS L'OUVERTURE DE {IL NE PEUT PAS ÊTRE; DANS VOTRE CODE IL EST LÀ


Questions connexes