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 중국어 웹사이트의 기타 관련 기사를 참조하세요!