프리디파인드 매크로~ :: 2006/07/06 03:44


미리 정의된 매크로를 사용하면 상황별로 코드를 나눠서 컴파일하기가 편라히다. 일례로 다음과 같은 경우가 있을 수 있다. 자신이 작성한 라이브러리가 디버그와 릴리즈를 별도로 제공하는 경우를 들 수 있다. 보통의 경우 라이브러리 이름 끝에 d가 붙은 것은 디버그용 라이브러리다. 그래서 system.lib를 조건에 따라서 두 종류로 배포한다고 해보자. 릴리즈는 system.lib고, 디버그는 systemd.lib가 되는 셈이다.
여기까진 기본이다. 그런데 라이브러리를 배포하다 보면 종종 CRT 종류를 맞춰줘야 하는 상황이 생긴다. CRT가 맞지 않으면 여러가지 오류가 생기는 원인이 된다. 특히 MFC등과 같이 컴파일되는 경우에는 더욱 심해진다. 그래서 CRT 종류별로 라이브러리를 배포하게 된다. 보통의 경우 싱글 쓰레드 CRT는 쓰지 않기 때문에 그놈은 배제 하기로 한다. 그러고 나면 멀티쓰레드 CRT, 멀티쓰레드 DLL CRT이렇게 두 종류가 생긴다. 여기다 디버깅까지 포함하면 총 4종류의 라이브러리가 생성된다. 이것들을 각각 상황에 맞게 빌드하려면 아래와 같이 할 수 있다.
이런데 사용되는 _DEBUG, _DLL등이 프리디파인드 매크로다. _DEBUG는 디버그 빌드일 경우 정의되고, 릴리즈 빌드일 경우 정의되지 않는다(ANSI 표준은 NDEBUG다). _DLL은 멀티쓰레드 DLL로 컴파일 되는 경우 정의되고, 그렇지 않은 경우 정의되지 않는다.  이놈들은 생각 보다 종류가 아주 다양하게 많다. 따라서 빌드되는 상황을 아주 상세하게 알 수 있다. 더 많은 프리디파인드 헤더에 대해서 알고 싶으신 분들은 아래 페이지를 참고하자!!

http://msdn.microsoft.com/library/default.asp?url=/library/en-us/vccelng/htm/prepr_18.asp

네이버에 북마크 다음에 북마크 마가린 바르기 HanRSS에 북마크하기 이올린에 북마크하기 News2.0에 투고하기 del.icio.us에 북마크하기 Digg에 번역해 투고하기 dzone에 번역해 투고하기 붐바
이올린에 북마크하기(0) 이올린에 추천하기(0)
스폰서
글타래

Trackback Address :: http://www.jiniya.net/tt/trackback/232
  • Gravatar Image.
    drvoss | 2006/07/06 08:10 | PERMALINK | EDIT/DEL | REPLY

    와우~ 좋은 팁 감사합니다. 영진님의 한개 한개의 아티클마다 감탄이 나올정도로 많이 배우고 있습니다. 좋은 하루 되세요. ^^

    • Gravatar Image.
      codewiz | 2006/07/07 13:39 | PERMALINK | EDIT/DEL

      별 내용도 아닌데 칭찬해 주시니~ 몸둘바를 모르겠습니다. 흐흐~

Name
Password

Homepage
Secret