C언어 링크 에러) 뭔가 잘못한 거 같은데
NoOTL(shippuden91)
2015-05-05 01:00
추천 0
댓글 13
다른 게시글
-
유니티 초본데 버젼다른거받아서 스크립트 에러남ㅁㅊㅋㅋ [1]천천히 살..(kiop7139) | 15.05.05추천 0
-
빙고 질문있습니다 도와주세요~ [3]살려주세요..(111.118) | 15.05.05추천 0
-
모르면 자살해야하는 영단어 (줄여서 모자영단어) [1]철구(218.236) | 15.05.05추천 0
-
야 매트랩도 여기서 쳐주냐 [1]123(203.230) | 15.05.05추천 0
-
디시 고정닉 중복 아직도 됨???익명(121.140) | 15.05.05추천 0
-
똑똑 계세유???? 질문 하나만 더 받아주세유 인수교환하는 함수 스왑 [3]익명(115.136) | 15.05.05추천 0
-
얘들아 파이썬으로도 c나 c++ 이할수잇는 모든걸 할수있는 부분? [2]익명(1.177) | 15.05.05추천 0
-
진로가 고민되십니까? YES : 글을 누른다. NO : 지나친다. [3]NoOTL(shippuden91) | 15.05.04추천 0
-
형님들 C++ switch case문인데.... [7]Okabe(119.71) | 15.05.04추천 1
-
나 진심 궁금한게 있다.oo(59.4) | 15.05.04추천 0
에러 메시지 창은 삶아먹었냐?
헤더에 static?
총체적 난국
변수 선언에 변수 초기화까지??
block.c는 정의는 어디갔음?
허허 블럭을 하나하나 함수로 만들어 그릴모양이군... 참신하다... ㅉㅉ
저 변수들 main.c 에서도 만들어지고 block.c 에서도 만들어지니 링크 오류 안내면 이상한거지.
이미 설명은 다 나왔는데 좀 더 자세하게 풀어쓰면, preprocessor가 헤더를 불러와서 삽입한 다음 c 파일을 기준으로 컴파일 / 링크 되니까 block.h와 block.c에서 같이 선언해버리니까 결과적으로 main.c와 block.c에서 전역 변수를 중복 선언하게 되고 링크 에러로 이어짐
C에서 전역 변수를 static으로 선언하는 건 스코프를 해당 변수가 선언된 C 소스 파일 범위로 제약하기 위한 것이므로 헤더에서 static으로 선언하는 건 특별한 이유가 없다면 아주 이상한 방법임
쓰다 보니까 헷갈려..
뭐 몇가지 테스트 해봤는데 extern은 생략해도 상관 없긴 하지만, 정석은 헤더 파일에는 extern만 써주고 실제 선언은 c 파일 내에서 하는게 맞음. 초기화까지 하면 중복 선언이고
모두 감사합니다..
지적받은 거 고치고 obj를 추가해주니까 됐어요.