C++ 튜토리얼 - 1.컴파일러

컴파일러이 튜토리얼을 따라가는 데 필요한 도구는 하나의 컴퓨터와 C++코드를 컴파일하고 프로그램으로 빌드해서 실행시킬 수 있는 컴파일러입니다.

C++는 오랜 세월동안 발전해온 언어이기 때문에 이 튜토리얼은 최근에 추가된 기능까지도 설명하고 있습니다. 그러므로, 제대로 이 튜토리얼을 따라오고 싶다면, 신형 컴파일러가 필요합니다. 부분적으로라도 2011년 표준에서 지정된 기능을 지원해야 합니다. 

많은 컴파일러 제작사들은 새 기능을 다른 방식으로 제공하곤 합니다. 이 페이지 하단을 보시면 필수적인 기능들을 제공하는 것으로 유명한 몇몇의 컴파일러가 나와있습니다.  그리고 대부분 공짜로 받아 쓸 수 있어요!

만약 어떤 이유 때문에 구형의 컴파일러를 사용해야 한다면, 이 튜토리얼의 예전 버전에 들어가세요. 여기! (더이상 업데이트하지 않음).

컴파일러가 뭐죠?컴퓨터는 하나의 언어만 이해할 수 있고, 그 언어는 0과 1의 집합으로만 이루어져 있습니다. 이 컴퓨터의 언어를 기계어라고 부릅니다.

컴퓨터에 대한 단일 명령은 다음과 같습니다.


| 00000 | 10011110 |


사용자로부터 두 수를 입력받고 그 수들을 더하여 합계를 표시할 수 있는 특정 컴퓨터의 기계어는 다음과 같습니다.


| 00000 | 10011110 | | 00001 | 11110100 | | 00010 | 10011110 | | 00011 | 11010100 | | 00100 | 10111111 | | 00101 | 00000000 |

보다시피, 0과 1만으로 이루어진 기계어로 바로 프로그래밍을 하는 것은 몹시 지루하고 오류를 만들기 쉽습니다. 프로그램을 더 쉽게 만들고자 한다면 고수준(high level)언어가 개발되어야만 했죠. 고수준의 언어로 짜인 프로그램은 또한 프로그래머가 서로의 프로그램을 더 쉽게 점검하고 이해하게 만들 수 있습니다.

아래는 C++로 쓰인 코드의 일부로서 정확히 같은 목적을 더 완수해냈습니다.


| 1234567 | int a, b, sum;

cin >> a; cin >> b;

sum = a + b; cout << sum << endl; | |

그렇더라도 위 코드를 바로 이해하기는 힘들 겁니다. 그저 기계어에 비해 C++이  얼마나 프로그램을 더 쉽게 만들 수 있는지만 알 수 있으면 됩니다.
 컴퓨터는 오직 기계어만 이해할 수 있고 사람은 고수준의 언어로 쓰고싶어하기 때문에, 고수준의 언어는 어느 시점에서 기계어로 번역되어야만 합니다. 그리고 이것은 다양한 프로그래밍 어플리케이션에 내장된 컴파일러, 인터프리터, 또는 어셈블러라고 불리는 특수한 프로그램에 의해 수행됩니다.

C++은 컴파일 언어로 디자인되었고, 일반적으로 시스템이 바로 이해할 수 있는 기계어로 번역되어서, 고성능의 프로그램을 만들 수 있습니다. 이것을 위해서는, 컴파일러와 링커가 핵심인 도구들의 집합이 필요합니다.

콘솔 프로그램콘솔 프로그램은 텍스트를 사용해서 사용자 및 환경과 소통하는 프로그램이다. 가령 텍스트를 화면에 출력하거나 키보드로부터 입력을 읽어들이곤 한다.

콘솔 프로그램은 상호작용하기 쉽고, 일반적으로 모든 플랫폼에서 동일하게 동작합니다.  또한 구현이 간단하며 프로그래밍 언어의 기초를 배우는 데 매우 유용합니다. 그리고 이 튜토리얼에 있는 예제들은 모두 콘솔에서 동작하는 프로그램입니다.

콘솔 프로그램을 컴파일하는 방법은 당신이 사용할 도구에 따라서 결정됩니다.

초심자가 C++ 프로그램을 컴파일하는 가장 쉬운 방법은 통햡 개발 환경(Integrated Development Environment:IDE)을 사용하는 것입니다. 통합개발환경은 일반적으로 여러개의 개발 도구들을 사용하는데, 텍스트 편집기와 그것으로 프로그램을 곧장 컴파일할 수 있는 도구들을 포함합니다.

여기 다양한 무료 통합개발환경들을 사용해서 콘솔 프로그램을 컴파일하고 실행하는 방법에 대한 설명서가 있습니다.

통합개발환경플랫폼콘솔 프로그램
Code::blocks윈도우/리눅수/맥OSCode::blocks을 사용해서 콘솔 프로그램을 컴파일하는 법
Visual Studio Express윈도우VS Express 2013을 사용해서 콘솔 프로그램을 컴파일하는 법
Dev-C++윈도우Dev-C++을 사용해서 콘솔 프로그램을 컴파일하는 법

만약 개발용 리눅스나 맥 환경을 사용하게 될 경우, 컴파일러에 명령어로 C++11 신호를 포함시켜서 터미널에서 곧장 어떤 예제든지 컴파일할 수 있어야 합니다.

컴파일러플랫폼명령어
GCC리눅스나 다른 것들...g++ -std=c++0x example.cpp -o example_program
ClangOS X나 다른 것들...clang++ -std=c++11 -stdlib=libc++ example.cpp -o example_program