export #

C++ template의 내보내기 키워드 입니다.
아직 제대로 구현되어 있는 컴파일러는 없습니다.


template은 타입이 정의 되지 않은 상태의 함수나 객체를 컴파일 타입에 정의를해서 코드를 생성하는 일종의 코드제너레이터 같은 것입니다.
template <class T>
class TClass
{
  T t;
};

위의 코드는 TClass<int> intClass 란 식으로 인스턴스를 만들기 전까지는 혹은 함수 같은 경우 사용되지 전까지는 코드를 만들지 않습니다.

아마 아래와 같은 코드를 컴파일 당시 만들것입니다.

class TClass
{
  int t;
};

그도 그럴것이 타입을 모르는데 어떻게 코드를 만들겠습니까?
그렇다고 모든 타입에 대해서(사용자정의 타입까지 한다면 헉..)다 코드를 만들수는 없는 노릇이고 ...

Object 파일 #

Object 파일 즉 중간 파일은 바이너리 코드 입니다.
컴파일된 기계코드이지요
이미 그안에는 실행되어지는 내용들이 있습니다.

그런데 template으로 라이브러리를 만들어서 Object 파일을 만든다면 ...
과연 타입이 없는데 어떤식으로 코드를 생성해서 놓을까여 ????

export는 그 답을 주는 키워드 입니다.
export는 template 내용을 Object파일에 넣어서 재사용 할수 있도록 하는 도구 입니다.

그러나 위에서 말한것 처럼 구현하기가 쉬운일은 아닌거 같습니다.
많은 비용도 들고 ...
이런 이유에서 컴파일러사 마다 쉽게 구현 못하는 이유일꺼라고 생각합니다.

아직 VC++이나 Borland C++, GNC C++ 의 대표적인 컴파일러 회사들의 구현물들도 아직 그것을 구현하지 못하고 있습니다.

아래의 링크 밑에 부분에 "export 및 내보낸 템플릿" 이란 주제로 Bobby Schmidt이란 사람이 글을 써놓은것이 있습니다.
한마디로 끔찍하다는 표현을 -_-

'Dev > C++' 카테고리의 다른 글

functor - 함수객체  (0) 2008.05.01
Casting operators  (0) 2008.05.01
main function  (0) 2008.05.01
tr1::regex (boost::regex) 샘플코드  (0) 2007.10.21
boost 를 이용한 TR1 Library 사용하기  (0) 2007.10.10

+ Recent posts