헤더파일 인클루드 시 .h 존재여부?

윤창호의 이미지

멍청한 질문일지 모르지만 정말 궁금해서 여쭤봅니다. -_-

인터넷 뒤져봐도 명확하게 안나와있는것 같네요...

헤더파일을 인클루드 할때

보통

#include "iostream.h"

와 같이 하는데

#include "iostream"

과 같이 하는 이유는 무엇이며 이런식으로 할때의 장단점 또는 .h 를 한것과의 차이점이

있습니까?

아니면 그냥 편이상 표기만 이렇게 하고 실제로는 .h 를 붙이는 건가요?

저같은 경우에는 과 같이 했을경우 에러가 납니다. .h 를 붙여줘야

에러가 안나구요..

저만 모르고 있는것 같아 질문을 꺼렸으나ㅋㅋ; 정말 궁금해서 올립니다~ 답변해 주세요

참 그리고 또하나

string 관련 헤더파일은 string.h 가 아니었던가요?

위와 같이 인클루드 하면 string 형 변수는 undeclared identifier 라는데.;;;;

그리고 추가로 ..ㅋㅋ;

getline 함수의 두번째 파라미터는 정수형이면 안되나요?

ssif의 이미지

c++ 에서 *.h를 사용하는 경우는 호한성을 위해 혹은 c에 사용하던 버릇(?)을 위해 남겨둔거라고 알고있습니다.표준에 정의된 것은 *.h를 사용치 않는 것으로알고 있습니다.

어떤 구현체(컴파일러)를 사용하시는지는 잘 모르겠지만 오래전에 만들어진 것을 사용하시는 것 같아보입니다.님의 질문은 국내 번역된 c++관련 책들의 첫번째 장에 많이 나오는 이야기입니다.

봄들판에서다

봄들판에서다

윤창호의 이미지

컴파일러에 따라 다르다는 말씀...

visual c++6.0 버전 쓰는데..

안되는군요.

아무튼 답변 감사합니다.

죠커의 이미지

C언어 표준은 stdio.h 헤더를 인클루드할 때 실제 stdio.h 파일이 존재해야 할 것을 요구하지 않습니다. 그런데 상당 수 프로그래머들은 stdio.h 파일이 존재하는 것 처럼 생각합니다.

.h가 붙지 않으면 많은 사람들이 덜 혼란스럽지 않을까 하는 생각에 C++ 표준에서는 #include <iostream>와 같이 설정되었습니다. 그런데 왜 #include <iostream>을 #include "iostream"으로 쓰는 것인지 모르겠군요.

컴파일러 마다 다르다는 이야기는 틀린 말입니다. 왠만큼 구형 컴파일러들도 (10년된 Visiaul C++ 6.0도) #include 정도야 지원합니다. 아래의 예제를 컴파일 해보세요.

#include <iostream>

int main(void)
{
std::cout << "Hello KLDP!" << std::endl;
return 0;
}

위의 소스를 이해할 수 없다면 가지고 있는 C++ 책을 버리시고 새 책을 사셔야 할 때 입니다.

PS: 그런데 BBCODE는 어떻게 입력하는 것입니까? &lt;와 &gt;를 이용하는 것은 매우 갑갑한 일이군요.

- CN의 낙서장 / HanIRC:#CN

lifthrasiir의 이미지

VC++ 6에서 #include <iostream>은 매우 잘 됩니다. 단지 하위 호환성을 위해 많은 컴파일러들이 #include <iostream.h>를 지원하고 있긴 합니다. 후자는 현재 네임스페이스에 식별자 등등이 들어 가지만, 전자는 std 네임스페이스에 식별자가 들어 간다는 차이가 있습니다. (이 말이 도대체 뭔지 모르시겠다면 전자를 쓰는 게 좋고, 그 뒤에 using namespace std;를 해야 한다는 것만 기억하세요. 그리고 웬만하면 네임스페이스에 대해서 알아 보시길 바랍니다.)

CN: bbcode도 입력 가능한 것 같습니다. 단지 HTML 코드가 추가적으로 인식되는 거 아닌가요?

- 토끼군

barmi의 이미지

C++을 처음 배우는 사람들 중에, #include <iostream>이 표준이고, 이렇게 써야한다고 얘기하니까, #include <iostream>하게되면, 컴파일러에서 자동으로 iostream.h를 포함하는 줄 아는 사람이 있더군요.
iostream이라는 파일과 iostream.h라는 파일은 따로 존재합니다.
해당 컴파일러의 include디렉토리를 잘 살펴보시면 그런 파일이 있을 겁니다.
cstdio파일이나 cstdlib, cmath등의 파일도 당연히 존재합니다.
물론 이런 파일들의 구분은 토끼군님께서 말씀하신대로입니다.

참고하세요.

IDNed의 이미지

Quote:

C++을 처음 배우는 사람들 중에, #include 이 표준이고, 이렇게 써야한다고 얘기하니까, #include 하게되면, 컴파일러에서 자동으로 iostream.h를 포함하는 줄 아는 사람이 있더군요.

뭐 iostream 내용이
namespace std{
#include <iostream.h>
}

이런 식 구현도 있을 수 있겠죠 ;)

댓글 달기

Filtered HTML

  • 텍스트에 BBCode 태그를 사용할 수 있습니다. URL은 자동으로 링크 됩니다.
  • 사용할 수 있는 HTML 태그: <p><div><span><br><a><em><strong><del><ins><b><i><u><s><pre><code><cite><blockquote><ul><ol><li><dl><dt><dd><table><tr><td><th><thead><tbody><h1><h2><h3><h4><h5><h6><img><embed><object><param><hr>
  • 다음 태그를 이용하여 소스 코드 구문 강조를 할 수 있습니다: <code>, <blockcode>, <apache>, <applescript>, <autoconf>, <awk>, <bash>, <c>, <cpp>, <css>, <diff>, <drupal5>, <drupal6>, <gdb>, <html>, <html5>, <java>, <javascript>, <ldif>, <lua>, <make>, <mysql>, <perl>, <perl6>, <php>, <pgsql>, <proftpd>, <python>, <reg>, <spec>, <ruby>. 지원하는 태그 형식: <foo>, [foo].
  • web 주소와/이메일 주소를 클릭할 수 있는 링크로 자동으로 바꿉니다.

BBCode

  • 텍스트에 BBCode 태그를 사용할 수 있습니다. URL은 자동으로 링크 됩니다.
  • 다음 태그를 이용하여 소스 코드 구문 강조를 할 수 있습니다: <code>, <blockcode>, <apache>, <applescript>, <autoconf>, <awk>, <bash>, <c>, <cpp>, <css>, <diff>, <drupal5>, <drupal6>, <gdb>, <html>, <html5>, <java>, <javascript>, <ldif>, <lua>, <make>, <mysql>, <perl>, <perl6>, <php>, <pgsql>, <proftpd>, <python>, <reg>, <spec>, <ruby>. 지원하는 태그 형식: <foo>, [foo].
  • 사용할 수 있는 HTML 태그: <p><div><span><br><a><em><strong><del><ins><b><i><u><s><pre><code><cite><blockquote><ul><ol><li><dl><dt><dd><table><tr><td><th><thead><tbody><h1><h2><h3><h4><h5><h6><img><embed><object><param>
  • web 주소와/이메일 주소를 클릭할 수 있는 링크로 자동으로 바꿉니다.

Textile

  • 다음 태그를 이용하여 소스 코드 구문 강조를 할 수 있습니다: <code>, <blockcode>, <apache>, <applescript>, <autoconf>, <awk>, <bash>, <c>, <cpp>, <css>, <diff>, <drupal5>, <drupal6>, <gdb>, <html>, <html5>, <java>, <javascript>, <ldif>, <lua>, <make>, <mysql>, <perl>, <perl6>, <php>, <pgsql>, <proftpd>, <python>, <reg>, <spec>, <ruby>. 지원하는 태그 형식: <foo>, [foo].
  • You can use Textile markup to format text.
  • 사용할 수 있는 HTML 태그: <p><div><span><br><a><em><strong><del><ins><b><i><u><s><pre><code><cite><blockquote><ul><ol><li><dl><dt><dd><table><tr><td><th><thead><tbody><h1><h2><h3><h4><h5><h6><img><embed><object><param><hr>

Markdown

  • 다음 태그를 이용하여 소스 코드 구문 강조를 할 수 있습니다: <code>, <blockcode>, <apache>, <applescript>, <autoconf>, <awk>, <bash>, <c>, <cpp>, <css>, <diff>, <drupal5>, <drupal6>, <gdb>, <html>, <html5>, <java>, <javascript>, <ldif>, <lua>, <make>, <mysql>, <perl>, <perl6>, <php>, <pgsql>, <proftpd>, <python>, <reg>, <spec>, <ruby>. 지원하는 태그 형식: <foo>, [foo].
  • Quick Tips:
    • Two or more spaces at a line's end = Line break
    • Double returns = Paragraph
    • *Single asterisks* or _single underscores_ = Emphasis
    • **Double** or __double__ = Strong
    • This is [a link](http://the.link.example.com "The optional title text")
    For complete details on the Markdown syntax, see the Markdown documentation and Markdown Extra documentation for tables, footnotes, and more.
  • web 주소와/이메일 주소를 클릭할 수 있는 링크로 자동으로 바꿉니다.
  • 사용할 수 있는 HTML 태그: <p><div><span><br><a><em><strong><del><ins><b><i><u><s><pre><code><cite><blockquote><ul><ol><li><dl><dt><dd><table><tr><td><th><thead><tbody><h1><h2><h3><h4><h5><h6><img><embed><object><param><hr>

Plain text

  • HTML 태그를 사용할 수 없습니다.
  • web 주소와/이메일 주소를 클릭할 수 있는 링크로 자동으로 바꿉니다.
  • 줄과 단락은 자동으로 분리됩니다.
댓글 첨부 파일
이 댓글에 이미지나 파일을 업로드 합니다.
파일 크기는 8 MB보다 작아야 합니다.
허용할 파일 형식: txt pdf doc xls gif jpg jpeg mp3 png rar zip.
CAPTCHA
이것은 자동으로 스팸을 올리는 것을 막기 위해서 제공됩니다.