Pregunta

He leído (en el libro de Nish Sivakumar C++/CLI en acción entre otros lugares) que debe usar el decorador __clrcall en llamadas a funciones para evitar el doble procesamiento, en los casos en los que sepa que el método nunca será llamado desde código no administrado.Nish también dice que si la firma del método contiene algún tipo de CLR, entonces el compilador JIT agregará automáticamente el archivo __clrcall.Lo que no me queda claro es si necesito incluir __clrcall cuando creo propiedades de C++/CLI.En un sentido, solo se puede acceder a las propiedades desde lenguajes .NET; por otro lado, el compilador C++/CLI (creo) solo genera métodos (p. ej.***_get() ) que se pueden llamar desde código administrado y no administrado.Entonces, ¿necesito usar el modificador __clrcall en mis propiedades y, de ser así, adónde va?¿En las funciones get/set?

¿Fue útil?

Solución

@Mike B - Gracias por el consejo sobre ildasm - No conocía esa herramienta.

Parece que leí o entendí mal a Nish: el modificador __clrcall y el problema de doble procesador que elimina solo se aplican a métodos de clases NATIVOS.Todos los métodos de las clases administradas son __clrcall de forma predeterminada, lo que parece obvio en retrospectiva.

Evidentemente el libro de Marcus Heege Experto en C++/CLI está disponible como descarga gratuita, y tiene una bonita tabla en la página 215 que resume las convenciones de llamada.

Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top