IT story

간단한 "Hello World"스타일 프로그램이 Turbo C ++로 컴파일되지 않는 이유는 무엇입니까?

hot-time 2020. 8. 23. 09:57
반응형

간단한 "Hello World"스타일 프로그램이 Turbo C ++로 컴파일되지 않는 이유는 무엇입니까?


프로그래밍 수업을 위해 C ++를 배우기 시작했습니다. 이 "Hello World"프로그램을 다운로드했습니다.

#include <iostream>
using namespace std;

int main() 
{
    cout << "Hello, World!";
    return 0;
}

그러나 Turbo C ++는 다음과 같이 불평합니다.

Error D:\HELLO.CPP 1: Unable to open include file 'IOSTREAM'
Error D:\HELLO.CPP 2: Declaration syntax error
Error D:\HELLO.CPP 6: Undefined symbol 'cout'

이 아주 간단한 프로그램의 문제점은 무엇입니까? 이러한 오류를 어떻게 수정할 수 있습니까?


이 프로그램에는 문제가 없습니다. (아마도 일부 문체 문제를 제외하고- using namespace std권장하지 않습니다). 문제는 Turbo C ++에 있습니다. 아주 오래된 소프트웨어입니다. 이것은 천년 초반에 완전히 사용이 중단 된 소위 ANSI C ++ 이전 의 C ++ 방언을 구현합니다 . C ++에 대한 최초의 ANSI 표준은 1998 년에 발표되었으며 2003 년 버전, 2011 년 버전, 2014 년 버전, 2017 년 버전이 있었고 이제 2020 년 버전이 공식적으로 게시 될 것으로 예상됩니다. 이러한 각 표준 개정은 언어에 다소 중요한 변경을 가져 왔습니다.

Turbo C ++의 경우 다음과 같이 프로그램을 수정해야합니다.

#include <iostream.h>      // note the .h suffix
// using namespace std;    // Turbo C++ doesn't implement namespaces

int main() 
{
    cout << "Hello, World!";
    return 0;
}

이 프로그램을 살펴보면 최신 C ++ 방언과 Turbo C ++에서 허용하는 방언의 차이가 작게 보일 수 있습니다. 그러나 프로그램이 더 복잡 해짐에 따라 훨씬 더 커질 것입니다.

Turbo C ++를 사용하여 프로그래밍을 배울 수 있지만 다음과 같은 문제로 인해 가능한 경우이를 피하는 것이 좋습니다.

  1. 업계에서 널리 사용되는 언어와 다소 유사한 언어를 배우게 될 것입니다. 그럼에도 불구하고 별다른 이유없이 매우 다릅니다. 실제 소프트웨어 개발을 위해 C ++를 작성할 계획이라면 많은 것을 다시 배워야합니다. 최신 C ++를 즉시 배우는 것이 훨씬 쉽습니다.
  2. Turbo C ++에 대한 현존하는 문헌이 없습니다. 인터넷이나 책에서 찾을 수있는 거의 100 %의 C ++ 자료는 즉시 Turbo C ++에 직접 적용 할 수 없습니다. 일부는 약간의 조정 만 필요하지만 다른 자료는 완전히 사용할 수 없습니다. 즉시 사용할 수있는 유일한 도움말은 내장 된 Turbo C ++ 도움말입니다.
  3. Turbo C ++를 기억하는 사람은 거의 없습니다. 포럼에서 질문을 할 때 항상 최신 버전의 언어에 맞는 응답을 필터링하기 위해 ANSI 이전 방언을 사용하고 있음을 지정하십시오. 즉시 중단하고 질문 할 때마다 최신 컴파일러로 전환 할 것을 제안하는 많은 주석을 받게 될 것입니다.

많은 현대 무료 (같이있다 맥주 뿐만 아니라에서 연설 ) 컴파일러 및 터보 C ++ 대신에 사용할 수있는 십오. 이들 중 일부는 다음과 같습니다.

  1. Visual C ++ Community Edition 은 Microsoft의 IDE 및 컴파일러입니다.
  2. Code :: Blocks 는 경량 IDE입니다. Windows에서는 다소 오래된 컴파일러와 함께 제공되지만보다 최신 컴파일러를 직접 설치할 수 있습니다.
  3. Eclipse CDT 는 강력한 크로스 플랫폼 IDE입니다. 자체 컴파일러와 함께 제공되지 않으므로 별도의 컴파일러를 설치해야합니다. Windows에서는 예를 들어 MinGW를 사용하십시오 .
  4. 더 많은
  5. 또한, 같은 많은 온라인 컴파일러가 http://ideone.com , https://www.onlinegdb.com/http://coliru.stacked-crooked.com/ , 플러스 많은은 (이들은 대부분 좋은 아이디어를 시도하고 아주 작은 프로그램을 작성하기 위해).
  6. Clang / LLVMGCC모두 최신 버전의 C ++를 지원하는 무료 소프트웨어 컴파일러입니다.

안타깝게도 일부 학교 / 교사는 학생들이 오늘날에도 Turbo C ++를 사용하도록 강요하는 것으로 보입니다. 불행히도 이것은이 커뮤니티가 해결할 수있는 문제가 아닙니다. 이런 상황에 처해 있다면 외부 도움을 많이받을 수 없도록 준비하십시오.


"Turbo C ++"는 수많은 컴파일러를 의미 할 수 있습니다. 이 질문을 할 때 버전 번호를 포함하는 것이 중요합니다.

  • 버전 3.1까지의 Borland Turbo C ++는 고전적인 파란색 배경 IDE의 순수한 MS DOS 컴파일러였습니다. 이것들은 1998 년에 C ++가 표준화되기 훨씬 전인 1989 년에서 1992 년 사이에 대략적으로 발표되었습니다. 그래서 그들은 C ++의 사전 표준 방언을 사용했습니다.

    가장 주목할만한 것은 #include <iostream.h>표준이 아닌 구문 을 사용 #include <iostream>했지만 네임 스페이스, 템플릿 등과 같은 C ++ 기능을 모두 다루지 않았습니다. 템플릿 라이브러리 STL은 아직 표준의 일부가 아니기 때문에 해당 라이브러리와 관련된 모든 것이 예뻤습니다. 나중에 표준이 된 것과 다릅니다.

  • Later in the 90s, Borland released several DOS/Windows compilers with better conformance. Up to version 5 somewhere they still struggled with complete conformance to C++98, although these Windows versions were fairly close to it.

  • In the late 90s, they dropped the name "Turbo C++" in favour for Borland C++ Builder, which was not just an IDE but a complete RAD tool based on Delphi. These compilers were fully compliant with C++98 and later C++03.

  • Around 2005, Borland dropped compilers as part of their product line. The compilers became "Codegear", which later became Embarcadero. Somewhere around then, they released a free version of Borland Builder that they named "Turbo C++". This version was fully conforming to C++03.

  • Nowadays these compilers are called Embarcadero C++ Builder. I believe they currently support up to C++11 with some C++14. More info here.

Needless to say, as a student you should not use anything but modern compilers. Using MS DOS compilers from 1991 when learning C++ in the year 2018 is simply madness. Not only is it counter-productive, it is directly harmful and will make you a bad C++ programmer. If your school is forcing you to use Turbo C++ 3.1 or older, then your school is bad and your teachers are severely incompetent. Please link this post to them and their principal.


Turbo C++ is a very old compiler and it is a little bit different from the GNU C++ compiler. The code you shared will work perfectly with the GNU compiler but to run it with Turbo C++ you need to make a few changes:

1. Change the name of header file from iostream to iostream.h
2. And remove the line "using namespace std" It is not required in Turbo C++. Here is the modified code:

#include <iostream.h>

int main() 
{
  cout << "Hello, World!";
  return 0;
}

참고URL : https://stackoverflow.com/questions/44863062/why-doesnt-a-simple-hello-world-style-program-compile-with-turbo-c

반응형