2010년 9월 1일 수요일

[C++] 최신 C++ 표준으로 작성한 HELLO WOLD

  error: iostream.h: No such file or directory
  error: 'cout' was not declared in this scope

주로 이런 에러가 표시되는데, 기본 헤더파일이 없다고? 'cout'이 선언되어 있지 않다고? 이 무슨 황당한 경우인가 하며, 인터넷을 뒤져보니 저와 비슷한 경험을 하신 분들이 상당수 있었습니다.

문제는 <iostream.h>가 C++ 표준이 아니라 <iostream>이 표준이라는데 있었습니다.
VC++ 6.0나 오래된 버전의 gcc(g++)의 경우에는 <iostream.h>도 함께 지원을 하지만, 최신 버전부터는 아예 <iostream.h>을 지원하지 않는 경우가 많습니다.

그리고 새로운 C++ 표준 라이브러리의 모든 이름은 std 네임스페이스에 있으므로, cin 또는 cout 등의 사용에 있어서도, 미리 네임스페이스를 정의하던지 아니면, 'std::cin'이나 'std::cout'과 같이 표기해야 합니다.

따라서 오래된 C++ 관련 서적들의 hello.cpp 예제들은 다음과 같이 수정되어야 합니다.
// exam1
#include <iostream>
using namespace std;
int main()
{
  cout << "Hello! \n";
  return 0;
}

// exam2
#include <iostream>

int main()
{
  std::cout << "Hello! \n";
  return 0;
}

그 밖에도 새로운 C++ 표준에서는 위와 유사하게 C에서 사용하던 표준라이브러리들, 예를 들어  <stdlib.h>나 <math.h> 등도 <cstdlib>와 <cmath> 등과 같이 확장자를 빼고 앞에 'c' 첨자를 붙여서 사용하길 권장하고 있습니다.

댓글 없음:

댓글 쓰기