#47. Managed Extensions for C++의 새로운 문법들

여러분은 Managed Extensions for C++ 프로젝트로 콘솔 프로그램을 작성하기 시작하였을 때 전에는 볼 수 없었던 새로운 키워드와 새로운 객체를 보실 수 있습니다.


우선 오늘은 새로운 키워드에 대해서 알아보도록 할 까 합니다.


1. #using 전처리기 구문


#using은 .NET 프레임 워크의 컴파일러만이 유일하게 감지해내는 전처리기 구문입니다. 이것은 #include와 유사한 성격을 띄지만 좀 더 유연하고 포괄적인 내용입니다.


#using은 *.h 파일과 같은 순수 소스 코드를 불러들이기 위한 것이 아니라 미리 컴파일된 닷넷 프레임워크 DLL을 직접 불러다 쓰거나, 아니면 기존에 누군가가, 혹은 자신이 생성했었던 프레임워크 호환 DLL을 불러다 쓸 때에 사용하는 구문입니다.


이 DLL은 닷넷 개발 툴에서만 사용이 가능하며, 다른 델파이와 같은 개발툴에서는 호환되지 않는 형식의 이진수 체계를 사용합니다. /clr 컴파일러 옵션을 더하고 나서 여러분은 코드의 맨 위나 stdafx.h에 이와 같은 선언을 더해줄 수 있습니다.


#using <mscorlib.dll>


이는 가장 핵심적인 닷넷의 기능을 축약해 담은 내용이 컴파일된 DLL을 로드하겠다는 의미입니다. 실제로 mscorlib.dll 파일은 존재하는 파일입니다.


2. 네임스페이스 객체와 namespace 키워드


네임스페이스라는 객체는 닷넷의 유일무이한 트레이드마크입니다. 네임스페이스 그 자체는 별 의미가 없으며 단지 클래스나 또 다른 네임 스페이스를 포함하기 위한 기능을 가질 뿐입니다.


이 네임스페이스는 파일 시스템의 디렉터리 구조와도 같아서, 클래스 이름이 동일하더라도 네임스페이스의 위치가 다르면 완전히 다른 클래스로 분리가 됩니다. 이에 따라서 클래스에서도 전역 클래스와 로컬 클래스로 다시 구분되어졌습니다.


이 네임스페이스 객체를 생성하기 위해서 여러분은 단지 namespcae 이름 {으로 선언을 시작해서 }; 로 선언을 끝내기만 하면 됩니다.


3. 네임스페이스 객체에 접근하는 방법은?


네임스페이스를 별도로 객체로 선언하여 접근한다는 생각을 하셨다면 착각하셨습니다. 올바르게 액세스하기 위해서 반드시 :: (스코프 연산자)를 사용해야 합니다. 별도의 선언 없이는 네임스페이스 내부의 클래스도 :: (스코프 연산자)로 접근해야 합니다.


4. __gc 키워드


__gc가 의미하는 것은 Garbage Collected를 뜻합니다. 하지만 길게 생각할 필요는 없으며 __gc로 선언되는 것들은 모두 닷넷 프레임워크 수중안에서 관리가 이루어지므로 사용자가 수동으로 delete 키워드를 사용해서 제거할 필요는 없습니다. 이 키워드를 사용할 수 있는 대상의 제한은 없습니다.

댓글 남기기