Heim >Backend-Entwicklung >C++ >Warum erhalte ich Fehlermeldungen, wenn ich std::min/max mit #define NOMINMAX verwende?

Warum erhalte ich Fehlermeldungen, wenn ich std::min/max mit #define NOMINMAX verwende?

Patricia Arquette
Patricia ArquetteOriginal
2024-11-14 17:18:02334Durchsuche

Why Do I Get Errors When Using std::min/max with #define NOMINMAX?

Verwenden von std::min/max mit #define NOMINMAX

In einem kürzlich durchgeführten Update Ihrer main.cpp-Datei haben Sie die folgende Präprozessoranweisung eingeführt:

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

Mit dieser Aktion können Sie die Funktionen std::max und std::min in Ihrem Code verwenden. Nachfolgende Versuche, diese Funktionen in anderen Dateien zu verwenden, führen jedoch zu Fehlern wie:

error C2589: '(' : illegal token on right side of '::'
error C2059: syntax error : '::'

Trotz Versuchen, NOMINMAX in diesen zusätzlichen Dateien zu definieren, besteht das Problem weiterhin.

Das Problem liegt in der Tatsache ist, dass NOMINMAX Aliase für die Windows-Min- und -Max-Makros definiert und die von bereitgestellten Standard-C-Versionen überschreibt. Um dieses Problem zu beheben, verwenden Sie Klammern um die Aufrufe std::min und std::max:

(std::min)(x, y);

Dieser Ansatz vermeidet den Aufruf der funktionsähnlichen Makros und ermöglicht die Anwendung der Standard-C-Versionen.

Das obige ist der detaillierte Inhalt vonWarum erhalte ich Fehlermeldungen, wenn ich std::min/max mit #define NOMINMAX verwende?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!

Stellungnahme:
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn