|
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++ 문법 강화 같은 것들을 찾아보았는데 없는 것 같더군요.
: 정말 궁금한건데 왜 그런지 모르겠군요.
: 아니면 제가 뭔가 치명적이고 중대한 사실을 알지 못하고 있는것인지..
: 아직 초보라 그럴 가능성도 많을 것 같은데;;
: 그럼.. 답변이 올라오길 기다리면서..
: 감사합니다.
|