Frage

Ich habe gelesen (in Nish Sivakumar Buch C ++ / CLI In Aktion unter anderem), dass Sie den __clrcall Dekorateur verwenden sollten auf Funktionsaufrufe Doppel Thunk zu vermeiden, in Fällen, in denen Sie wissen, dass das Verfahren wird nie von nicht verwalteten Code aufgerufen werden. Nish sagt auch, dass, wenn die Methode Signatur keinen CLR-Typen enthält, dann werden die JIT-Compiler automatisch die __clrcall hinzufügen. Was mir nicht klar ist, ist, wenn ich __clrcall müssen schließen, wenn ich C ++ / CLI-Eigenschaften erstellen. In einem gewissen Sinne sind, Eigenschaften von .NET-Sprachen, nur zugänglich auf der anderen Seite der C ++ / CLI-Compiler (glaube ich) erzeugen nur Methoden (z *** _ get ()), die von beide verwalteten und nicht verwalteten Code aufgerufen werden kann. Also muss ich die __clrcall Modifikator auf meine Eigenschaften verwenden, und wenn ja, wo geht es hin? Auf den get / set-Funktionen selbst?

War es hilfreich?

Lösung

@ Mike B - Danke für den Tipp auf ildasm -. Ich wusste nicht, über dieses Werkzeug

Es scheint, dass ich falsch verstanden / mißverstanden Nish - der __clrcall Modifikator und das Doppel-Thunk Problem, das es nur auf Methoden der NATIVE Klassen gelten eliminiert. Alle Methoden von Managed Klassen sind standardmäßig __clrcall -., Die im Rückblick scheint offensichtlich

Offenbar Buch Marcus Heege Expert C ++ / CLI ist verfügbar

scroll top