>백엔드 개발 >C++ >std::numeric_limits::max()를 사용하여 Windows.h Max 매크로 충돌을 해결하는 방법은 무엇입니까?

std::numeric_limits::max()를 사용하여 Windows.h Max 매크로 충돌을 해결하는 방법은 무엇입니까?

DDD
DDD원래의
2024-11-11 12:59:03721검색

How to Resolve the Windows.h Max Macro Collision with std::numeric_limits::max()?

Std와 Windows.h Max 매크로 충돌: A 솔루션

C로 개발할 때 표준 라이브러리 정의와 Windows.h 헤더가 발생할 수 있습니다. 이 충돌은 max 매크로의 사용에 영향을 미칠 수 있습니다.

구체적으로 제공된 코드 조각은 max 매크로를 사용하여 cin의 유효하지 않은 사용자 입력을 처리하려고 시도합니다. 그러나 Windows에서는 Windows.h의 max 매크로가 std::numeric_limits::max()와 충돌합니다.

이 문제를 해결하려면 더 깔끔하고 세련된 접근 방식을 사용하세요. Windef.h에서 최소 및 최대 정의를 억제합니다. 이는 Windows.h를 포함하기 전에 NOMINMAX 매크로를 정의하여 달성할 수 있습니다.

#define NOMINMAX
#include <Windows.h> // includes WinDef.h which defines min() max()

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에서 충돌하는 최소 및 최대 정의를 효과적으로 비활성화하여 std::를 사용할 수 있습니다. Numeric_limits::max() 매크로를 수정하거나 정의 해제하지 않습니다. 이 솔루션을 사용하면 보기 흉한 해결 방법이 필요하지 않으며 C 표준 라이브러리와의 원활한 통합이 보장됩니다.

위 내용은 std::numeric_limits::max()를 사용하여 Windows.h Max 매크로 충돌을 해결하는 방법은 무엇입니까?의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!

성명:
본 글의 내용은 네티즌들의 자발적인 기여로 작성되었으며, 저작권은 원저작자에게 있습니다. 본 사이트는 이에 상응하는 법적 책임을 지지 않습니다. 표절이나 침해가 의심되는 콘텐츠를 발견한 경우 admin@php.cn으로 문의하세요.