앞서 두 번을 걸쳐서 C++/CLI에 대해서 잘 모르는 분과 싫어하는 분을 위해서 제 생각이나 MSDN에 있는 글을 정리해서 포스팅 했습니다.
이제 본격적으로 C++/CLI에 대해서 설명해 나가겠습니다(이 글을 보는 분들은 C++을 알고 있다고 가정을 하겠습니다).
1. ‘C++/CLI가 뭐야?’
라고 질문을 하면 가장 초 간단한 답은 ‘.NET에서 C++를 사용하기 위한 언어’ 라고 말할 수 있습니다. 그런데 이 답은 너무 간단하고 없어 보이죠? ^^;
그래서 좀 유식하게 보일 수 있도록 고급스럽게 답해 보겠습니다(또는 복잡하게).
C++/CLI에서 CLI는 ‘Common Language Infrastructure’의 약자입니다.
C++/CLI는 CLI 환경에서 돌아가는 프로그램을 만들기 위한 언어입니다. C++/CLI는 마이크로소프트(이하 MS)가 만들었지만 공업 표준화 단체인 ECMA에 의해서 표준 언어로 제정 되어 있습니다.
C++/CLI는 C++로 만든 프로그램을 거의 그대로 컴파일 할 수 있습니다.
C++의 표준 기능에 CLI를 위한 추가 기능이 더해져 있습니다.
2. 가장 많은 프로그래밍 언어로 만드는 프로그램 만들기
가장 많은 프로그래밍언어로 만드는 프로그램은 무엇일까요? 제가 생각하기에는 그 유명한 ‘Hello World’라고 생각합니다. 제가 공부한 대부분의 프로그래밍 언어 책에는 첫 번째 예제 프로그램이 Hello World였습니다.
그래서 C++/CLI도 관례(?)에 맞추어서 ‘Hello World’ 프로그램을 만들어 보겠습니다.
(VS의 마법사 기능에 의해서 코딩을 하나도 하지 않고 프로그램이 만들어집니다.)
< 리스트 1. ‘Hello World’ >
#include
"stdafx.h"
using namespace
System;
int
main(array<System::String ^> ^args)
{
Console::WriteLine(L"Hello World");
return 0;
}
<리스트 1>의 코드는 <그림 1>에서 ‘OK’ 버튼을 누른 후 자동으로 생성되는 코드입니다. 이것을 빌드 후 실행을 하며 아래와 같은 결과가 나옵니다.
그런데 문제는 실행과 동시에 종료되어서 결과를 볼 틈이 없습니다.
예전에 C++에서는 이런 경우 코드의 아래에 ‘getchar()’를 사용하여 결과를 보고 종료시켰습니다.
그런데 다들 아시겠지만 ‘getchar()’라는 함수는 .NET 라이브러리에 있는 함수가 아닌 네이티브의 함수입니다. C#이라면
바로 사용하지 못하겠지만 C++/CLI는 이런 네이티브의 함수를 바로 사용할 수 있습니다.
<리스트 2. getchar() 사용 >
#include
"stdafx.h"
#include
<stdio.h>
using namespace
System;
int
main(array<System::String ^> ^args)
{
Console::WriteLine(L"Hello World");
getchar();
return 0;
}
<리스트 2>는 .NET 라이브러리와 네이티브가 자연스럽게 공존하고 있습니다.
이런 것이 C++/CLI이기 때문에 가능한 것입니다.
다음에는 C++의 트레이드마크인 ‘클래스’와 C에서부터 친숙한 struct가 C++/CLI에서는 어떤 의미를 갖고 어떻게 사용되는지 알아 보겠습니다.
'C++/CLI' 카테고리의 다른 글
[step.03] 배열 (1) | 2010.06.18 |
---|---|
[Step.02-2] 클래스(class), 핸들(^), 그리고 구조체(struct) (5) | 2010.06.11 |
[Step 02-1] 클래스(class), 핸들(^), 그리고 구조체(struct) (1) | 2010.06.04 |
.NET에서의 C++/CLI의 의미 (0) | 2010.05.21 |
C++/CLI는 미운 오리새끼 or 백조 (2) | 2010.05.11 |