C ++ 소스 코드를 컴파일하는 방법 (“iostream.h를 찾을 수 없음”오류)?


20

C ++ 또는 프로그래밍 언어에 대해 논의하고 싶지 않습니다!

나는 C ++을 배우고 있으므로 내 단계는 다음과 같습니다.

vim에서 hello.cpp를 열고 이것을 쓰십시오.

#include <iostream.h>
int main()
{
    cout << "Hello World!\n";`
    return 0;
}

그래서 그 후 나는 터미널에서 이것을 시도했다.

g++ hello.cpp

그리고 출력은

hello.cpp:1:22: fatal error: iostream.h: No such file or directory
compilation terminated.

당신은 무엇을 제안합니까? 나에게 유용한 단계별 가이드가 있습니까? 감사합니다!


2
누구 든지이 질문을 주제 외의 주제로 마무리하기 위해 투표를 고려하는 경우 : 이것은 Windows 용 가장 인기있는 C ++ 컴파일러 (Microsoft Visual C ++) 가이 구문을 허용하지만 대부분의 다른 컴파일러 ( g++Ubuntu 포함 ) 받아들이지 마십시오.
Eliah Kagan

네임 스페이스 std를 사용하는 #include <iostream>; int main () {cout << "Hello World"; 리턴 0; } 이것은 작동 할 수 있습니다 ...

답변:


43

사용 #include <iostream>하지 말고 iostream.h; .H 형태는 매우 오래된 년 이후 사용되지 않습니다.

당신은 당신이 아마에 알고 싶은 것보다 더 많은 읽을 수 있습니다 .H 비 대 .H 여기 형태 : http://members.gamedev.net/sicrane/articles/iostream.html

(또한, 줄을 쓰거나 std::cout줄을 가져야합니다. using namespace std;그렇지 않으면 다음 오류는 컴파일러가에 대한 정의를 찾지 못하는 것입니다 cout.)


4
@gabriel C ++은 1980 년 중반으로 거슬러 올라가는 오랜 역사를 가지고 있습니다. 현재 몇 가지 공개 표준이 있으며, 그 중 최신 (C ++ 11)이 올해 초에 발표되었으며 이전 표준 (오늘날 모든 컴파일러가 따르는 표준)은 2003 년 (C ++ 03)으로 거슬러 올라갑니다. 링크 된 가이드는 언급 한 컴파일러 소프트웨어로 볼 때 Wikipedia에 따르면 Borland Turbo C ++은 1994 년에 중단되었습니다. C ++ 03 표준에 따라 튜토리얼을 선택하면 코드는 현재 사용 가능한 모든 Linux 배포판에서 작동합니다.
Riccardo Murri

1
@gabriel 님의 질문이 StackOverflow에서 이미 답변 된 것 같습니다 : stackoverflow.com/questions/909323/…
Riccardo Murri

1
또한 다음이 필요할 수도 있습니다 : sudo apt-get install build-essential
david6

2
@ david6 : 빌드 필수가 설치되어 있지만 iostream.h시스템 에는 없습니다 . 실제로 C ++ 헤더 파일은 libstdc ++-dev에 의해 설치되며 , 이는 C ++ 컴파일러 패키지 g ++ 에 필요하며, build-essential에 필요 합니다. 따라서 간단한 C ++ 프로그램을 컴파일하기 위해 빌드 필수 요소 가 필요하지 않습니다 . g++패키지 설치 로 충분합니다.
Riccardo Murri

1
다만 얻기 위해 cout를 빼고 작업에 std::접두사 using std::cout;에 바람직하다 using namespace std;. 원하지 않는 네임 스페이스 에서 식별자를 가져 오지 않고 자체 프로그램의 이름과 충돌 할 수 있으므로 여러 using명령문 ( namespace)이 없는 것이 일반적으로 더 좋습니다 std.
Eliah Kagan

15

로 변경해야 iostream.h합니다 iostream. 또한 당신이 얻는 것과 같은 오류가 발생했지만 iostream.h방금 변경했을 때 iostream제대로 작동했습니다. 어쩌면 그것은 당신에게도 효과가있을 것입니다.

다시 말해, 다음과 같은 행을 변경하십시오.

#include <iostream.h>

대신 이것을 말하십시오 :

#include <iostream>

표준에 정의 된대로 C ++ 표준 라이브러리 헤더 파일에는 .h확장자 가 없습니다 .

Riccardo Murri의 답변 에서 언급했듯이 cout완전한 이름 으로 전화 std::cout하거나 다음 두 줄 중 하나를 사용해야합니다 (바람직하게 #include지시문 아래 이지만 다른 코드 위에 있음).

using namespace std;
using std::cout;

두 번째 방법은 네임 스페이스의 std::cout모든 이름을 가져 오지 않고 std(프로그램 중 일부가 잠재적으로 프로그램에 사용 된 이름을 방해 할 수 있음) 영향을 미치기 때문에 특히 심각한 프로그래밍 프로젝트의 경우 선호되는 것으로 간주됩니다 .


좋은 대답입니다. @gabriel의 질문에 대답하면서 몇 년 동안 몇 가지 혼란을 해결했습니다.
isomorphismes
당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.