C++Builder Programming Forum
C++Builder  |  Delphi  |  FireMonkey  |  C/C++  |  Free Pascal  |  Firebird
볼랜드포럼 BorlandForum
 경고! 게시물 작성자의 사전 허락없는 메일주소 추출행위 절대 금지
C++빌더 포럼
Q & A
FAQ
팁&트릭
강좌/문서
자료실
컴포넌트/라이브러리
메신저 프로젝트
볼랜드포럼 홈
헤드라인 뉴스
IT 뉴스
공지사항
자유게시판
해피 브레이크
공동 프로젝트
구인/구직
회원 장터
건의사항
운영진 게시판
회원 메뉴
북마크
볼랜드포럼 광고 모집

C++빌더 Q&A
C++Builder Programming Q&A
[38240] Re:[자유게시판 답변] 헤더 파일
[] 892 읽음    2004-12-01 10:55
Include Guard 라고 불리는 것인데요..
가령 a.h 가 존재할 경우 이런식으로 작성하게 됩니다.
#ifdef _A_H_
#define _A_H_
int a; // header 에 변수 선언을 하는 것은 나쁜 방법입니다. 하지만 설명을 위해서...
#endif

Include Guard 가 존재하는 이유는 Project 가 대규모로 커지게 되다보면 헤더 또는 소스 파일들간에 #include 를 서로 하다보면 소스가 중복되는 경우가 필연적으로 발생하게 되고 이 경우 doubly defined 에러가 나게 됩니다.

가령 b.h 소스에 #inlcude "a.h" 가 존재하는 경우
test.c 파일에서

#include "a.h"
#include "b.h" // a.h 내용이 b.h 에 포함되어 있음

이런식으로 하다보면 a.h 내용이 test.c 에 2번 포함이 되는 경우가 발생하는데 이렇게 될 경우 test.c 에는 a 라는 변수가 2번 나타나게 되고 당연히 컴파일러는 에러를 발생시키겠지요. 이런 경우를 위해서 한번만 include 를 하도록
Trick 을 사용하는 것입니다.





김상면 님이 쓰신 글 :
: #ifndef _이름_h
:       매크로 상수 _이름_h 가 정의 되어 있지않으면 다음 라인들을 시행하라
: #define _미름_h
:       매크로 상수 _이름_h 를 다른 곳에서 사용못하도록 하라
:       #define _이름_h  123455    라고 하면 _이름_h을   123455로 정의 하라==>소스코드에서 _이름_h  는 123455와     
:       완전히  똑  같은 표현이 됨
: #endif _이름_h
:       요건 모르겠음  아마 위의 #ifndef의 마지막를 가르키는 것 같음 베이직의 if문의  endif와 같은 역활을 하는거로
:       알고 있음
: _Cdecl _FARFUNC
:       요건 진짜 모름 dll생성시 이런 예약어 본것 같음
: 이만
:
: ==================================================================================================
: 얼마전에야 C++을 배우기 시작한 초보입니다.
:
: header file에 보면
:
: #ifndef _이름_h
: #define _미름_h
:
: 내용
:
: #endif _이름_h
:
: 뭐 이렇게 있는데, 어떤 역할을 하는지 궁금합니다.
:
: 그리고 변수 형태와 함수이름 사이에 있는
: _Cdecl _FARFUNC
: 이런 것들은 무엇을 의미하는지 가르쳐 주시면 감사하겠습니다.
:
: 즐거운 하루 되세요.

+ -

관련 글 리스트
38234 [자유게시판 답변] 헤더 파일 김상면 939 2004/12/01
38281     Re:[자유게시판 답변] 헤더 파일 998 2004/12/05
38240     Re:[자유게시판 답변] 헤더 파일 892 2004/12/01
38238     Re:조금더 보충설명을 하면. bluewing 818 2004/12/01
Google
Copyright © 1999-2015, borlandforum.com. All right reserved.