Ich schaue durch das Windows 8.1 SDK und in UnknownBase.h sehe ich Dinge wie
typedef interface IUnknown IUnknown;
Ich habe das noch nie gesehen interface
Stichwort vor. Beachten Sie, dass dies sehr definitiv a ist .h
Header, verarbeitet von cl.exe
. Es ist keine IDL-Datei und wird nicht von verarbeitet midl.exe
.
Ich habe das im Internet gefunden: http://msdn.microsoft.com/en-us/library/50h7kwtb.aspx
Aber __interface
ist nicht dasselbe wie interface
Kann mich hier jemand einweisen?
Microsoft hat einige Compiler-spezifische Erweiterungen wie die von Ihnen verlinkte aber interface
sollte kein natives C++-Compiler-spezifisches Schlüsselwort sein, sondern ein Define, das etwas ersetzt (in BaseTyps.h war es früher wie folgt definiert)
# define interface struct
Hier verlinken
Wenn Sie dies überprüfen möchten, tun Sie a grep für eine solche Definition und Sie sollten etwas Ähnliches finden.
Verweise: http://social.msdn.microsoft.com/forums/vstudio/en-US/06bf1dea-1d20-4ec3-b9a1-3d673d7fcd8d/what-is-the-interface-keyword-in-native-c
Gibt es eine
#define interface
irgendwo? Es ist sicherlich kein natives C++-Schlüsselwort, aber der Präprozessor könnte es so aussehen lassen.– Greg Hewgill
11. August 2014 um 0:09 Uhr
msdn.microsoft.com/en-us/library/windows/desktop/…
– BLUEPIXY
11. August 2014 um 0:27 Uhr
Klicken Sie einfach im Editor mit der rechten Maustaste auf „Schnittstelle“ und wählen Sie „Gehe zu Definition“. __interface ist ein nicht standardmäßiges Schlüsselwort, gut dokumentiert in MSDN. Wie Sie sehen können, bietet es viel mehr Garantien als Struktur tut. Das Konzept ist in vielen Sprachen ziemlich groß, in COM massiv. Es kann auch ohne Spracherweiterungen in C++ ausgedrückt werden, nur viel fehleranfälliger. Ein Compiler kann Ihnen sagen, wenn Sie einen Fehler gemacht haben, aber nur, wenn er das Konzept versteht.
– Hans Passant
11. August 2014 um 0:38 Uhr
@HansPassant Seltsamerweise, als ich mit der rechten Maustaste darauf geklickt habe
interface
in Visual Studio die Option fürGo To Definition
war ausgegraut (was überhaupt zu meinem Stack-Overflow-Post geführt hat). Aber wie ich in einem Kommentar unten an MarcoA beschreibe, hat ein findstr den Zweck erfüllt. Es ist jedoch seltsam, dass dieses visuelle Studio es nicht finden kann.– Feldtensor
11. August 2014 um 1:15 Uhr