#include 에 관한 질문입니다.
글쓴이: 김유석 / 작성시간: 화, 2006/09/05 - 3:15오후
헤더에 관한 제 프로그래밍 스타일은 다음과 같습니다.
main.h
#ifndef __main_h__
#define __main_h__
#include
#include
#endif // end of __main_h__
위와 같이 헤더에 인클루드를할 헤더를 선언하는 방식을 사용하고 있습니다. 그런데 아는 분이 위와 같이 헤더 파일에서 인클루드를 하지 않고 소스에서 인클루드를 하는게 좋다고 하셔서 어떤게 나은 것인지 질문 드립니다.
Forums:
별 상관 없다고
별 상관 없다고 생각합니다.
예를 들어, FILE 구조체를 인자로 받는 함수의 프로토타입을 정의하는 헤더라면 헤더에 stdio.h를 포함시키는 것이 명확하겠지만, 이런 경우가 아니라 정의부분에서만 FILE을 사용한다면 소스에서 stdio.h를 포함시키는 것이 더 명확할 것입니다.
위의 말이 정확한지는 모르겠지만, 어쨌든 저는 이렇게 생각하고 이렇게 사용합니다.
Real programmers /* don't */ comment their code.
If it was hard to write, it should be /* hard to */ read.
감사합니다.
감사합니다.
헤더에서 보여줄
헤더에서 보여줄 필요가 없는 것은 보여주지 않는 것이 좋습니다.
돼지군님이 말씀하셨듯, 함수 인자이면 당연히 포함시켜야겠지요. (에러가 날테니..)
하지만 내부 구현을 위해 malloc을 쓰고 뭘 쓰고.. 이런 건 헤더 파일에 넣으면 바람직하지 않습니다.
예외 상황이 있을까요? 음..
전 주로 소스보다는
전 주로 소스보다는 헤더파일에 많이 넣는 편입니다. 저 같은 경우는 보통 소스와 맞물려서 헤더를 하나 더 제작하는 편이거든요. 물론 관습적으로 하는 방식이 존재할 수도 있겠지만, 각각의 편한 기호에 맞춰서 만드면 되지 않을까요?
------------------------------------------------------
아직은 젊다. 모든 것을 할 수 있는 나이란 말이지.
------------------------------------------------------
아직은 젊다. 모든 것을 할 수 있는 나이란 말이지.
내부 구현에 특정
내부 구현에 특정 외부 라이브러리를 쓰고, static link를 걸었다고 생각해봅시다. 그런데 그 특정 외부 라이브러리를 헤더 파일에 넣어야 할까요? :(
헤더와 object 파일을 넘겨줘서 그냥 링크만 하면 되는 것을, 컴파일 할 때 그 특정 외부 라이브러리를 요구하게 되어버립니다. 뭐 지우고 써도 되겠습니다만 :(
헤더를 분리하고 소스를 분리하는 의도를 잘 살려야 한다고 생각합니다. 사소하지만 지키기 어려운 것은 아니지 않습니까 :)
제가 말씀 드린 것은
제가 말씀 드린 것은 지키지 말자 라고 말씀 드린것은 아닙니다. ^^ 이렇게 짜는 것이 좋다, 저렇게 짜는 것이 좋다 라는 방법론에 대해서 그건 방법론이지, 꼭 지켜야만 하는 것은 아니라고 생각하기 때문입니다. 제가 아직 미숙하다 보니 개발을 하다보면, 주먹구구식으로 헤더 만들고 소스 짜고 이런 경우도 존재해서 그런거 같습니다. 나중에는 이러한 사소한 것들을 지키기 위해 코드 수정을 할려면, 양이 많아서 못하는 경우도 발생을 하더군요. 아무튼 좋은 말씀 감사합니다. ^^
------------------------------------------------------
아직은 젊다. 모든 것을 할 수 있는 나이란 말이지.
------------------------------------------------------
아직은 젊다. 모든 것을 할 수 있는 나이란 말이지.
인용: 꼭 지켜야만
제가 보기에는 방법론이나 코딩 관습이 아니라, 원칙이고 구성 원리.. 인 것 같습니다.
댓글 달기