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
[27588] 뭔가 착각하신듯...
김백일.cedar [cedar] 779 읽음    2003-10-20 18:52
cele 님이 쓰신 글 :
: using namespace std; 가 무엇인가에 대한 질문이 아니라
: 이 문장이 기본적으로 포함되게 됨에도 불구하고 Builder 에서 반드시 소스코드에 새로 저 문장을
: 강제적으로 추가시키게 하는게 이상하다는 거였습니다.
: 아니면 충분히 설명해주신건데 제가 못 알아들은건지;
: 제가 허접이라 잘 못알아들은 것이면 너그러이 용서를..
:
: 다시 설명해보겠습니다.
:
: 다음은 <iostream> 이고
: //---------------------------------------------------
:  #ifdef _USE_OLD_RW_STL
:  # include <oldstl\iostream.h>
:  #else
:  # include <stlport\iostream>
:  /* Define __STD_IOSTREAM__ here to cause sysclass.h to define
:     VCL_IOSTREAM which causes certian iostream operators to get defined
:  */
:  #define __STD_IOSTREAM__
:  #endif

:  #if !defined(__USING_STD_NAMES__) && defined(__cplusplus)
:  using namespace std;
:  #endif /* __USING_STD_NAMES__ */
: //----------------------------------------------------
:
: 이거는 hello.cpp 라고 하면
: //----------------------------------------------------
: #include <iostream>

여기서 #include <iostream.h> 가 아니라는 것에 유의하셔야 합니다.
컴파일러는 $(BCB)\include\iostream.h 파일을 인클루드하는 것이 아니라,
$(BCB)\include\stlport\iostream 파일을 바로 인클루드합니다.

: int main()
: {
:   cout << "Hello" << endl;
:   return 0;
: }
: //----------------------------------------------------

: hello.cpp 는 컴파일시에 전처리기에 의해 다음과 같이 될것입니다.
: //----------------------------------------------------
: # include <stlport\iostream>
: #define __STD_IOSTREAM__
: using namespace std;
:
: int main()
: {
:   cout << "Hello" << endl;
:   return 0;
: }
: //----------------------------------------------------
:
: _USE_OLD_RW_STL
: 이건 Builder6 에선 정의되지 않을테고
: __cplusplus
: 이건 당연히 정의되겠고
: __USING_STD_NAMES__
: 이건 using namespace std; 구문 포함 확인 매크로일테구요
:
: 결론적으로
: #if !defined(__USING_STD_NAMES__) && defined(__cplusplus)
:  using namespace std;
:  #endif /* __USING_STD_NAMES__ */
: 이 구문이 긍정이 되면서 using namespace std; 문장이 포함되게 됩니다.
:
: 실제로 <iostream> 내용을 그대로 복사해서 File1.h 를 만든다음
: 이것을 hello.cpp 에 #include 추가한 후 실행하면 당연히 using namespace std;
: 없이도 실행이 됩니다.
: 그런데 유독 <iostream> 만 저 구문이 효력이 없느냐는거죠.
: 혹시나 해서 프로젝트 옵션들에서 c++ 문법 강화 같은 것들을 찾아보았는데 없는 것 같더군요.
: 정말 궁금한건데 왜 그런지 모르겠군요.
: 아니면 제가 뭔가 치명적이고 중대한 사실을 알지 못하고 있는것인지..
: 아직 초보라 그럴 가능성도 많을 것 같은데;;
: 그럼.. 답변이 올라오길 기다리면서..
: 감사합니다.

+ -

관련 글 리스트
27581 iostream 헤더에.. cele 928 2003/10/20
27593     Re:iostream 헤더에.. 임문환.실업자 978 2003/10/20
27596         명쾌한 답변 정말 감사드립니다. cele 777 2003/10/21
27582     Re:iostream 헤더에.. 김백일.cedar 934 2003/10/20
27586         제 질문은 그게 아니었습니다. cele 743 2003/10/20
27588             뭔가 착각하신듯... 김백일.cedar 779 2003/10/20
27592                 잘못 알고 계시는 것 같습니다만.. cele 956 2003/10/20
Google
Copyright © 1999-2015, borlandforum.com. All right reserved.