2011-03-15 5 views
7

Hola Mi proyecto VC2008 usa las convenciones de llamadas stdcall. Tengo una biblioteca externa que estoy usando que se ha creado con la convención de nomenclatura cdecl, sin embargo, no mencionaron la convención de llamadas en la declaración de función de las funciones.Cómo forzar la convención de llamadas cdecl para las funciones declaradas en el archivo de encabezado específico

me gustaría saber si VC tiene algún tipo de #pragma u otra palabra clave que obligaría convención de llamada específica para todo el archivo de cabecera

un poco como el truco extern "C" pero para convenciones de llamada:

extern "C" 
{ 
#include <file1.h> 
#include <file2.h> 
} 

¿Alguien sabe de tal?

Respuesta

4

Puede especificar convención de llamada por:

  • No hacer nada y se obtiene el valor por defecto de cdecl.
  • Especifique __cdecl explícitamente (o quizás a través de una macro).
  • Elija usar cdecl en una unidad de traducción mediante la compilación con/Gd.

No hay pragma ni nada similar para controlar las convenciones de llamadas.

+2

Las dos primeras son las obvias y las que estoy tratando de evitar. Dios sabe cuántas definiciones de funciones tendré que cambiar. Solo para corregirlo, el valor predeterminado no es cdecl, es lo que está configurado en Configuración del proyecto (que en mi caso está configurado como llamada estándar). – Grim

+0

Estoy hablando del compilador predeterminado. El IDE anula ese valor predeterminado si cambia la configuración predeterminada del proyecto (que también son cdecl). –

+0

Todavía estoy buscando una solución sin modificaciones. Tal vez pragma específico de Visual Studio o algo así. – Grim

Cuestiones relacionadas