„Wenn ein Arbeiter seine Arbeit gut machen will, muss er zuerst seine Werkzeuge schärfen.“ – Konfuzius, „Die Gespräche des Konfuzius. Lu Linggong“
Titelseite > Programmierung > 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?

Veröffentlicht am 22.12.2024
Durchsuche:689

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 
#include 

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, dass NOMINMAX Aliase für die Windows-Min. definiert und max-Makros, wobei die von bereitgestellten Standard-C-Versionen überschrieben werden. Um dieses Problem zu lösen, verwenden Sie Klammern um die Aufrufe std::min und std::max:

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

Dieser Ansatz vermeidet den Aufruf der Funktion- wie Makros, sodass die Standard-C-Versionen angewendet werden können.

Neuestes Tutorial Mehr>

Haftungsausschluss: Alle bereitgestellten Ressourcen stammen teilweise aus dem Internet. Wenn eine Verletzung Ihres Urheberrechts oder anderer Rechte und Interessen vorliegt, erläutern Sie bitte die detaillierten Gründe und legen Sie einen Nachweis des Urheberrechts oder Ihrer Rechte und Interessen vor und senden Sie ihn dann an die E-Mail-Adresse: [email protected] Wir werden die Angelegenheit so schnell wie möglich für Sie erledigen.

Copyright© 2022 湘ICP备2022001581号-3