> 백엔드 개발 > C++ > Windows.h와 표준 라이브러리 간의 'max' 매크로 충돌을 해결하는 방법은 무엇입니까?

Windows.h와 표준 라이브러리 간의 'max' 매크로 충돌을 해결하는 방법은 무엇입니까?

Mary-Kate Olsen
풀어 주다: 2024-11-11 16:41:02
원래의
259명이 탐색했습니다.

How to Resolve the `max` Macro Collision Between Windows.h and the Standard Library?

Windows.h와 Std 간의 최소 및 최대 매크로 충돌

C에서 입력 유효성 검사를 처리할 때 다음과 같은 충돌이 발생할 수 있습니다. Windows.h에 정의된 max 매크로와 표준 라이브러리의 max 함수입니다. 이는 무시 기능을 사용하여 입력 스트림 오류 플래그를 지우려고 할 때 발생할 수 있습니다.

이 문제를 해결하려면 다음 접근 방식을 사용하는 것이 좋습니다.

#define NOMINMAX
#include <Windows.h>
#include <iostream>

void Foo()
{
    int delay = 0;
    do
    {
        if(cin.fail())
        {
            cin.clear();
            cin.ignore(std::numeric_limits<std::streamsize>::max(), '\n');
        }
        cout << "Enter number of seconds between submissions: ";
    } while(!(cin >> delay) || delay == 0);
}
로그인 후 복사

NOMINMAX 매크로는 최소 및 Windows.h의 max 정의를 통해 프로그램은 충돌 없이 표준 라이브러리의 max 함수를 사용할 수 있습니다. 이 접근 방식을 사용하면 최대 매크로를 수동으로 정의 취소하고 나중에 다시 정의할 필요가 없습니다.

위 내용은 Windows.h와 표준 라이브러리 간의 'max' 매크로 충돌을 해결하는 방법은 무엇입니까?의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!

원천:php.cn
본 웹사이트의 성명
본 글의 내용은 네티즌들의 자발적인 기여로 작성되었으며, 저작권은 원저작자에게 있습니다. 본 사이트는 이에 상응하는 법적 책임을 지지 않습니다. 표절이나 침해가 의심되는 콘텐츠를 발견한 경우 admin@php.cn으로 문의하세요.
저자별 최신 기사
인기 튜토리얼
더>
최신 다운로드
더>
웹 효과
웹사이트 소스 코드
웹사이트 자료
프론트엔드 템플릿