반응형
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 하는 것이 더 좋은 방법으로 보인다.
반응형