C 언어 파일 분할 하는 법 -_-;;
글쓴이: hbull / 작성시간: 일, 2010/03/07 - 6:26오후
안녕하세요?
이런 질문 올리기 민망하지만 하다가 잘 안되서 질문 올립니다.
C언어(WIPI C) 로 제작한 프로그램이 있는데요,
파일 하나로만 제작해서 소스코드가 상당히 길어졌는데 (약 5천줄) 함수 기능에 따라 파일로 분할하고 싶습니다.
만약 기존의 파일, 예를 들어 main.cpp 가 있는데, 여기서 계산하는 함수부분을 빼려면
calc.h 에 함수원형을 넣고,
calc.c 에 실제 함수와 calc.h 를 include 하고,
main.cpp 에서 calc.c를 include 하면 되는거 아닌가요?
이런저런 방법으로 계속 시도해봤는데, 잘 안되네요
답변 부탁드립니다.
Forums:
include 하는건
include 하는건 헤더(.h)입니다.
========================
귀엽고 깜찍한 호빵님~ >ㅁ<
그건 관습일뿐입니다
include로 소스 파일 포함시켜도 문제없습니다.
어차피 전처리과정에서 부모파일의 일부분으로 되기 때문입니다.
즐린
즐린
관습이라고 하긴 좀
관습이라고 하긴 좀 문제가 있네요.
C언어는 기본적으로 링크 과정이 있습니다.
말씀하신 것 같이 include는 헤더만 한다는게 관습이라고 한다면
소스에 소스를 include하는게 정당하다는 말씀이 됩니다.
그렇게 되면 여러 소스를 한꺼번에 링크 하는 과정에서 중복되는 많은 symbol들은 어떻게 하실건가요?
-------------------------------------------------------------------------------
It's better to appear stupid and ask question than to be silent and remain stupid.
-------------------------------------------------------------------------------
It's better to appear stupid and ask question than to be silent and remain stupid.
샘플 만들어 봤습니다.
http://shint.tistory.com/attachment/cfile4.uf@16608C254B9388AB841802.zip
저도 댓글 달 수 있는 질문이 있었군요 ㅋㅋ
매일 1억명이 사용하는 프로그램을 함께 만들어보고 싶습니다.
----------------------------------------------------------------------------
젊음'은 모든것을 가능하게 만든다.
매일 1억명이 사용하는 프로그램을 함께 만들어보고 싶습니다.
정규 근로 시간을 지키는. 야근 없는 회사와 거래합니다.
각 분야별. 좋은 책'이나 사이트' 블로그' 링크 소개 받습니다. shintx@naver.com
좀 더 상세한 정보를 주셔야..
방법이야 별 문제가 없을 것 같은데
컴파일 명령이나 에러 메시지 등의 정보를 좀 더 상세히 알려주셔야
답변을 받으실 가능성이 높아지지 않을까요?
(개인적으로는 확장자가 cpp인 것이 마음에 걸립니다만..)
~!~!
main 에서는 calc.c를 include하는게 아니구요, calc파일에서 헤더만 선언되어있다면, 컴파일시에 main과 calc를 같이 컴파일해주시면 됩니다.
음..
기존의 통짜로 되어 있는 파일에서..
몇몇 루틴만 calc.c 로 나눠서 저장한 후에..
main.cpp 에서 #include "calc.c" 를 부르고..
main.cpp 만 컴파일 하겠다는 의미인가요..?
뭐 이렇게 해도 별 문제는 없겠지만..
가급적 module 로 나눠서 각각 빌드하고..
링크하는 형태로 작업하시는게 나을 것 같네요.
되면 한다! / feel no sorrow, feel no pain, feel no hurt, there's nothing gained.. only love will then remain.. 『 Mizz 』
되면 한다! / feel no sorrow, feel no pain, feel no hurt, there's nothing gained.. only love will then remain.. 『 Mizz 』
개발 환경 / 컴파일을
개발 환경 / 컴파일을 어떤 식으로 했는 지 적어주셔야 정확히 답을 드릴 수 있을 것 같습니다. IDE 를 사용하셨다면 웬만하면 같은 프로젝트에 넣어두면 IDE 에서 잘 빌드 해 줄텐데요.
main.c
calc.h
calc.c
만약 gcc 로 컴파일을 한다면,
처럼 모든 소스 파일을 인자로 넣어주시던가.. (1)
처럼 컴파일과 링크를 별도로 해 주시는 방법(2)이 있습니다.
물론 #include "calc.c" 같이해도..
헤더들만 제대로 잘 선언해 줬다면(특히 헤더가 중복으로 include 되지 않도록.. 헤더에 #ifndef, #endif 를 사용하는 것을 추천)
컴파일이 잘 되어야 하는 게 정상이긴 합니다만...
일반적으로는 (2) 의 방법(+ Makefile 등의 빌드 스크립트)을 많이 쓰는 걸로 알고 있습니다.
댓글 달기