소스파일과 헤더파일에 대해서
글쓴이: 셤중 / 작성시간: 일, 2017/01/01 - 5:38오후
다음과 같이 소스파일과 헤더파일을 만든다면 문제가 있나요?? 실행파일은 문제 없이 됩니다만...
ex)
// fct.h
int add(int n)
{
[공백] return ++n;
}
// fct.c 없음!
// main.c
#include [stdio.h] // < 표현이 안 되네요...
#include "fct.h"
int main(void)
{
[공백] int n = 5;
[공백] n = add(n);
[공백] printf("%d\n", n); // n=6 출력
[공백] return 0;
}
헤더파일에 변수를 선언 시 프로그램이 복잡해지면 문제가 발생할 수 있다는 건 이해가 됩니다.
그러나 헤더파일 내용은 단순히 선언과 구조체만이 그리고 소스파일에는 정의된 내용들이 있어야 한다는 것이 이해가 안 됩니다. 무슨 문제가 발생하여 이렇게 정해진 것인지.
단순히 시간이 흐르다 정해진 관례인 건가요??
제가 제시한 내용을 보면 굳이 정의 내용을 담은 소스파일(fct.c)과 그에 따른 헤더파일(fct.h)을 나눠야 하는 필요성을 못 느끼겠습니다. 질문을 정리하면.
1. 헤더파일의 내용에 함수 정의를 쓰면 안 되는 이유.
2. 헤더파일과 소스파일. 내용을 기준으로 만들어 구분하는 이유.
새해 복 많이 받으시구 감사합니다.
p.s. 소스파일 만들지 않고 헤더파일만 추가로 연관 있는 것끼리 구분해 만들면 된다... 가 저의 의견입니다.
Forums:
동일한 헤더 파일을 여러 소스 파일에서 인클루드하는
동일한 헤더 파일을 여러 소스 파일에서 인클루드하는 경우를 생각해보면 자명해지죠.
헤더에 함수 정의가 있을 경우, include가
헤더에 함수 정의가 있을 경우, include가 복잡해지다 보면, 함수 정의가 중복될 수 있기 때문입니다.
예를 들어,
위와 같은 코드에서 main.c를 컴파일하기 전에 프리프로세서가 #include 부분을 처리하면 main.c는
가 되고, a() 함수가 중복으로 정의 되어서 컴파일이 되지 않습니다.
댓글 달기