헤더파일 인클루드 시 .h 존재여부?
글쓴이: 윤창호 / 작성시간: 일, 2006/03/19 - 6:03오후
멍청한 질문일지 모르지만 정말 궁금해서 여쭤봅니다. -_-
인터넷 뒤져봐도 명확하게 안나와있는것 같네요...
헤더파일을 인클루드 할때
보통
#include "iostream.h"
와 같이 하는데
#include "iostream"
과 같이 하는 이유는 무엇이며 이런식으로 할때의 장단점 또는 .h 를 한것과의 차이점이
있습니까?
아니면 그냥 편이상 표기만 이렇게 하고 실제로는 .h 를 붙이는 건가요?
저같은 경우에는 과 같이 했을경우 에러가 납니다. .h 를 붙여줘야
에러가 안나구요..
저만 모르고 있는것 같아 질문을 꺼렸으나ㅋㅋ; 정말 궁금해서 올립니다~ 답변해 주세요
참 그리고 또하나
string 관련 헤더파일은 string.h 가 아니었던가요?
위와 같이 인클루드 하면 string 형 변수는 undeclared identifier 라는데.;;;;
그리고 추가로 ..ㅋㅋ;
getline 함수의 두번째 파라미터는 정수형이면 안되나요?
Forums:
c++ 에서 *.h를
c++ 에서 *.h를 사용하는 경우는 호한성을 위해 혹은 c에 사용하던 버릇(?)을 위해 남겨둔거라고 알고있습니다.표준에 정의된 것은 *.h를 사용치 않는 것으로알고 있습니다.
어떤 구현체(컴파일러)를 사용하시는지는 잘 모르겠지만 오래전에 만들어진 것을 사용하시는 것 같아보입니다.님의 질문은 국내 번역된 c++관련 책들의 첫번째 장에 많이 나오는 이야기입니다.
봄들판에서다
봄들판에서다
그렇다면..
컴파일러에 따라 다르다는 말씀...
visual c++6.0 버전 쓰는데..
안되는군요.
아무튼 답변 감사합니다.
C언어 표준은 stdio.h
C언어 표준은 stdio.h 헤더를 인클루드할 때 실제 stdio.h 파일이 존재해야 할 것을 요구하지 않습니다. 그런데 상당 수 프로그래머들은 stdio.h 파일이 존재하는 것 처럼 생각합니다.
.h가 붙지 않으면 많은 사람들이 덜 혼란스럽지 않을까 하는 생각에 C++ 표준에서는 #include <iostream>와 같이 설정되었습니다. 그런데 왜 #include <iostream>을 #include "iostream"으로 쓰는 것인지 모르겠군요.
컴파일러 마다 다르다는 이야기는 틀린 말입니다. 왠만큼 구형 컴파일러들도 (10년된 Visiaul C++ 6.0도) #include 정도야 지원합니다. 아래의 예제를 컴파일 해보세요.
위의 소스를 이해할 수 없다면 가지고 있는 C++ 책을 버리시고 새 책을 사셔야 할 때 입니다.
PS: 그런데 BBCODE는 어떻게 입력하는 것입니까? <와 >를 이용하는 것은 매우 갑갑한 일이군요.
- CN의 낙서장 / HanIRC:#CN
- 죠커's blog / HanIRC:#CN
VC++ 6에서 #include
VC++ 6에서 #include <iostream>은 매우 잘 됩니다. 단지 하위 호환성을 위해 많은 컴파일러들이 #include <iostream.h>를 지원하고 있긴 합니다. 후자는 현재 네임스페이스에 식별자 등등이 들어 가지만, 전자는 std 네임스페이스에 식별자가 들어 간다는 차이가 있습니다. (이 말이 도대체 뭔지 모르시겠다면 전자를 쓰는 게 좋고, 그 뒤에 using namespace std;를 해야 한다는 것만 기억하세요. 그리고 웬만하면 네임스페이스에 대해서 알아 보시길 바랍니다.)
CN: bbcode도 입력 가능한 것 같습니다. 단지 HTML 코드가 추가적으로 인식되는 거 아닌가요?
- 토끼군
실제로 iostream이라는 파일과 iostream.h라는 파일이 따로 존재합니다.
C++을 처음 배우는 사람들 중에, #include <iostream>이 표준이고, 이렇게 써야한다고 얘기하니까, #include <iostream>하게되면, 컴파일러에서 자동으로 iostream.h를 포함하는 줄 아는 사람이 있더군요.
iostream이라는 파일과 iostream.h라는 파일은 따로 존재합니다.
해당 컴파일러의 include디렉토리를 잘 살펴보시면 그런 파일이 있을 겁니다.
cstdio파일이나 cstdlib, cmath등의 파일도 당연히 존재합니다.
물론 이런 파일들의 구분은 토끼군님께서 말씀하신대로입니다.
참고하세요.
Quote: C++을 처음
뭐 iostream 내용이
이런 식 구현도 있을 수 있겠죠 ;)
댓글 달기