기타 Lobsters · 2026-10-16

윈도우 개발자라면 다 아는 'WIN32_LEAN_AND_MEAN'은 왜 생겼을까?

핵심 요약
  • 윈도우 95 개발 시절, 32비트 전환으로 무거워진 windows.h에서 불필요한 헤더들을 제외해 가볍게 유지하고자 도입되었습니다.
  • 미리 컴파일된 헤더가 없던 시절 486 컴퓨터에서 C 파일당 컴파일 시간을 약 3초 단축해 프로젝트당 수 분의 빌드 시간을 절약해 주었습니다.
  • 현재는 컴퓨터 성능 향상과 최적화 기법의 발전으로 실질적인 절약 효과가 거의 없어졌습니다.
요약 윈도우 개발을 해본 프로그래머라면 한 번쯤 코드 상단에 선언해 봤을 매크로인 `WIN32_LEAN_AND_MEAN`의 탄생 비화가 마이크로소프트의 베테랑 엔지니어 레이먼드 첸(Raymond Chen)의 블로그를 통해 공개되었습니다. 레이먼드 첸에 따르면, 이 심볼은 윈도우 95 개발 당시 16비트 윈도우에서 32비트 윈도우로 전환되던 시기에 처음 도입되었습니다. 기존 16비트 시절의 `windows.h`는 가볍고 최소한의 헤더 파일만 포함하고 있었으나, 32비트로 넘어가면서 수많은 추가 헤더가 기본으로 묶여 들어오게 되었습니다. 이에 따라 헤더 파일을 세부적으로 직접 통제하고 싶어 하던 개발자들의 불만이 커졌고, `WIN32_LEAN_AND_MEAN`을 정의하면 불필요한 부가 헤더들을 제외하고 과거 16비트 시절처럼 최소한의 필수 헤더만 남기는 철학으로 되돌아갈 수 있게 만들었습니다. 특히 당시에는 미리 컴파일된 헤더(PCH, Precompiled Header)가 보편화되지 않았기 때문에 빌드 속도 개선에 실질적으로 큰 도움이 되었습니다. 레이먼드 첸의 회상에 따르면, 50MHz 속도의 80486 CPU와 8MB RAM 환경에서 이 옵션을 켜면 C 파일 하나당 컴파일 시간을 약 3초 단축할 수 있었습니다. 20개의 C 파일로 구성된 프로젝트라면 전체 빌드에서 무려 1분을 아낄 수 있었던 셈입니다. 그러나 현재는 무어의 법칙에 따른 하드웨어 성능 비약과 미리 컴파일된 헤더의 대중화로 인해, 이 매크로가 제공하는 빌드 시간 단축 효과는 거의 사라져 사실상 역사적 유물에 가깝게 되었습니다. 그럼에도 과거 개발 환경의 치열했던 최적화 고민을 보여주는 재미있는 흔적으로 남아 있습니다.
Sponsored · 광고