Ich nehme windows.h
in einer meiner h-Dateien (um CaptureStackBackTrace
zu verwenden) in einem Visual-Studio-Projekt auf. Zuerst bekam ich einige Compilerfehler wegen der Verwendung von min / max std Methoden und des Makros mit dem gleichen Namen in windows.h
, aber das scheint durch #define NOMINMAX
gelöst zu sein, wie ich in anderen SO Posts gelesen habe. (Ich sage "scheint", weil ich nicht sicher sein kann, bis mein gesamtes Projekt wieder in Ordnung ist).
Das Problem besteht darin, dass einige lokale Variablennamen den Build jetzt unterbrechen. Die Linie:
%Vor%innerhalb einer Klassenmethode verursacht den folgenden Fehler:
%Vor% während die cpp-Datei kompiliert wird, wenn ich den Variablennamen in grp1_
ändere.
Natürlich kann ich einfach den Variablennamen ändern, aber trotzdem habe ich das Gefühl, dass ich etwas falsch mache - oder? Oder ist dies ein bekanntes Problem, wenn windows.h
hinzugefügt wird? Gibt es eine andere, elegantere Lösung als den Variablennamen zu ändern?
Es ist bis zu einem gewissen Grad ein Problem mit allen Bibliothekskopfzeilen. C- und C ++ - Reservierungsnamen beginnen mit einem _
für die Implementierung (der Standardbibliothek). Andere Bibliotheken sind für sich allein. Man würde auf ein namespace
hoffen, oder wenn die Bibliothek in C kompilierbar sein muss, eine Art Namenskonvention, wie ein Präfix, aber weder Windows noch Posix tun dies. (In den frühen Tagen enthielten die Header für X ein #define String
, was kein Problem mit anderen Bibliotheken verursachte.)
Am Ende gibt es keine gute Lösung. Sie müssen nur warten, bis Sie getroffen werden, und dann den Namen Ihrer Funktion ändern. ( windows.h
ist besonders schlecht, weil die meisten "Funktionen" darin Makros sind und dem Geltungsbereich nicht gehorchen.)
Nun, grp1 ist so in dlgs.h definiert:
%Vor%und dlgs.h sind in windows.h enthalten, daher der Konflikt.
Du kannst #undef grp1
nach dir #include <windows.h>
. Nicht die schönste Seite, aber wenn Sie windows.h nur einmal hinzufügen, können Sie diese Korrekturen an einem Ort behalten.
Tags und Links c++ windows visual-studio