2010-07-15 4 views
0

로봇의 범퍼 스위치 코드를 컴파일하려고하는데이 오류가 발생합니다. "오류 - 기호 'tr'에 여러 정의가 있습니다." 이것은 무엇을 의미 하는가? 나는 이것에 고통스럽고 새로운 ..."오류 - 'tr'기호에 여러 정의가 있습니다."

+2

여러 .c 파일에 포함 된 .h 파일에 'tr'이 정의되어 있습니까? –

+0

[One Definition Rule] (http://en.wikipedia.org/wiki/One_Definition_Rule)을 참조하십시오. –

답변

3

컴파일 타임이나 링크 시간에 오류가 표시되는지 여부에 따라 다릅니다. 당신은 (때 오브젝트 파일에서 프로그램을 구축) 링크 시간에 그것을 볼 경우

  • , 그것은 두 개 이상의 오브젝트 파일을 의미하며, 변수 'TR은'(또는 함수 'TR')는 여러 정의 다른 파일에서 시간.

  • 하나의 파일이 오브젝트 파일로 변환 될 때 컴파일시 표시되면 주어진 소스 파일에서 변수 또는 기능을 두 번 이상 정의했습니다.

1

코드에서 변수 tr에 대한 하나 이상의 정의가있을 수 있습니다. 예 :

int tr = 0;

과 같은 코드의 다른 부분에서

, 또는

int tr = 0;

이 여러 번 정의되고 있는지 확인하기 위해 코드에서 tr에 대한 검색을 수행 파일.

+0

* "여러 번 선언 된 경우"* - 여러 선언이 괜찮 으면 여러 정의가 (대부분) 없습니다. –

+0

@ George - 가져온 포인트. 게시물을 업데이트하십시오. –

0

어쩌면 당신의 헤더 파일 (있는 당신이 tr을 선언했을 수도) 같은 .c 파일을 여러 번 포함되고있다.

쉬운 솔루션 중 하나는 Include Guards입니다.

+0

헤더가 문제가되기 위해서는 헤더가 변수를 선언해야합니다. 헤더는 '결코'('아주 아주 드물다'는 의미) 변수를 정의해야합니다. –

관련 문제