Was ist das Schlüsselwort „interface“ in MSVC?

Lesezeit: 2 Minuten

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?

  • 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ür Go 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

Benutzer-Avatar
Marco A.

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

  • Wow, ja, das ist es. Ich habe ein findstr /s /i /c:"#define interface" * von innen C:\Program Files (x86)\Windows Kits\8.1\Includeund in combaseapi.h ich fand #define interface struct

    – Feldtensor

    11. August 2014 um 1:08 Uhr


1294230cookie-checkWas ist das Schlüsselwort „interface“ in MSVC?

This website is using cookies to improve the user-friendliness. You agree by using the website further.

Privacy policy