std::min, std::max 함수를 사용할 때, windows.h헤더가 선언된 경우, 컴파일 에러가 발생한다.

#include <windows.h>
#include <algorithm>

int main()
{
    auto min = std::min(1, 2);    
}

image


에러 발생 원인은 windows.h에는 매크로로 min, max가 이미 정의되어 있기 때문이다.

// windows.h에는 이미 정의가 되어 있음.
// 예시코드로 실제 구현과는 다름.
#define min(a,b)            (((a) < (b)) ? (a) : (b))
#define max(a,b)            (((a) > (b)) ? (a) : (b))

#define NOMINMAX을 선언하면 min, max 매크로가 정의되는 것을 막을 수 있다.

#define NOMINMAX

#include <windows.h>
#include <algorithm>

int main()
{
    auto min = std::min(1, 2);    
}

카테고리:

업데이트:

댓글남기기