c언어 main이가 ~~에 여러번 정의 되어있습니다 관련 질문 입니다.
제가 c언어로 프로잭트를 만들고 있었는데 헤더파일로 소스파일을 합치고 오류를 고치다보니
"main이가 ~~에 여러번 정의 되어있습니다" 라고 떴습니다 구글링 해서 찾아보니까 꾀고치는 법이 많더라구요 그래서 다해 봤는데 안되는 거에요 그래서 수소문끝에 뎁스노트를 찾아서 질문 합니다.
제가 그 문제의 파일을 보내드릴게요 다운받아서 확인해 주세요 바이러스는 없습니다. 꼭 답변 부탁드리겠습니다. 그리고 뭐가 문재 인지 알려주시기 바랍니다. (비주얼 스튜디오 파일 입니다.)
안녕하세요~
main() 함수는 한 프로젝트에 하나만 존재해야 합니다.
그런데, 님의 프로젝트에는 main() 함수가 두개 존재하고 있어요.
부피.c 에 하나가 존재하고요, 겉넓이.c 파일에 또 하나가 존재하네요.
그 이유는, 두 c 파일이 헤더.h 를 include 하고 있기 때문입니다.
어떤 파일을 include 하게 되면, 그 파일 내의 코드가 그대로 include 를 호출한 c 파일에 추가되게 됩니다. 마치 Copy&Paste 한것 처럼요.
그래서, 부피.c 와 겉넓이.c 파일에 헤더.h 파일의 코드가 그대로 추가되게 되는 거구요. 헤더.h 안에 main() 함수가 존재하기 때문에, 이 main() 함수가 부피.c 와 겉넓이.c 파일에 존재하게 되는 거에요. 그래서, 결과적으로 main() 함수가 두개가 되어버리는 것이지요.
이 문제를 해결하는 방법은 두가지 정도가 있는데요.
첫째는, main() 함수를 헤더.h 안에 정의하지 말고, 부피.c 혹은 겉넓이.c 파일 중 하나의 파일 안에 정의를 하는 것입니다.
둘째는, main() 함수를 지금처럼 헤더.h 안에 정의 하되, 헤더.h 파일을 하나의 c 파일에서만 include 하는 것입니다.