2013-09-23 3 views
1

정수 값을받는 프로그램을 작성하여 atoi를 사용하여 2의 보수 정수로 변환하고 어떤 유형의 순서가 만들어 졌는지 결정합니다.오류 : 연결이없는 'y2'의 재 선언

#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 ; 

} 

그리고 내 오류 : 여기 내 코드입니다

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 

컴파일 9 월 (22) 20시 7분 2초 일에 코드 2 비정상적으로 종료 "

나는이의 원인을 궁금 오류.

감사합니다,

+0

기능 이름과 인수 이름 모두에 "회전"을 사용하는 것이 좋습니다. 이 인수를 지역 변수로 사용하는 것이 훨씬 건전하지 못합니다. 호출자가 값을 전달하거나 반환하는 데 사용되지 않는 첫 번째 인수를 증명하기 위해 turn()을 강제 실행하므로 결과를 반환하기 전에 로컬 변수를 선언 할 필요가 없습니다. 나는 여러분이 인수 목록에서 "turn"을 가져 와서 대신 다른 이름으로 지역 변수를 선언하는 것이 좋습니다. –

+0

턴 기능이 컴파일되는 것이 이상합니다. 차례가 그것에 함수 포인터 수 있으며 lvalue에 할당하는 문제가 발생할 수 있습니다. 바깥 쪽에서도 주 –

답변

1

당신이 받고있는 오류는 메시지가 정확히 무엇입니까 너 한테 말하는 것.

  • 당신은 선언하는 당신의 변수 y2 두 번
  • 당신은 어디
  • 당신은이 같은 동일한 이름을 가진 두 멤버를 가질 수 없습니다 y1을 선언하지 않았다. turn 변수와 동일한 이름의 turn 변수가 있습니다. INT의 전원을 켜고 선언에서) (주 전에
+0

덕분에 실수로 y2와 y1 대신에 y2가 두 번 선언되었습니다. – user190494

1

(); 이런 int가있다 Turn() {; 은 {또는;이어야합니다.

Main()에서 Y2를 두 번 선언했으며 그 중 하나는 Y1이어야합니다.

참고 : 개봉 후 {수는 없으며; 귀하의 코드에 그것이 있습니다