반응형

출처:

http://stackoverflow.com/questions/2483304/typedef-and-struct-in-c-and-h-files

http://stackoverflow.com/questions/232693/including-one-c-source-file-in-another

http://stackoverflow.com/questions/6316987/should-struct-definitions-go-in-h-or-c-file


그 동안엔 쭉 헤더에 구조체 선언 및 정의를 다 해왔다.

뭐 그렇게 하는 거 맞는 줄 알고 따로 생각을 안 해서 그런 것이지만.


그러다가 소스에서 구조체 정의를 하는 것을 보았다.

이러면 사용자에게 굳이 안 보여줘도 되니 좋아 보였다.

그래서 나도 이렇게 써먹어야지 하고 하니까 왠걸 내꺼는 구조체의 정의를 볼 수 없다고 나왔다.


왜인지 찾아보니 당연한 것이겠지만 헤더만 읽어오니까 그런 거였다.

그래서 하는 수 없이 예전처럼 헤더에 다시 정의를 하니까 읽어올 수 있었다.


정리하자면 헤더에 정의하는 것은 public으로 선언하는 것과 비슷하고,

코드에 정의하는 것은 private로 선언하는 것과 비슷하다고 할 수 있을려나.


뭐 이를 해결하는 다른 방법으론 소스파일을 include로 잡아 넣는 방법이 있겠으나

추천하는 방법은 아니다.


그런 것보다 세 번째 링크의 두 번째 답변처럼 아예 구현 데이터에 접근하는 함수를 만든 다음,

이 함수의 헤더를 include 하는 것이 더 좋은 방법으로 보인다.

반응형
Posted by 애콜라이트
l

free counters