Exportar (0) Imprimir
Expandir todo
Este artículo proviene de un motor de traducción automática. Mueva el puntero sobre las frases del artículo para ver el texto original. Más información.
Traducción
Original

Directivas de pragma y la palabra clave de __Pragma

Las directivas pragma especifican las características del compilador de específicos operativo o equipo. El __pragma (palabra clave), que es específico para el compilador de Microsoft, permite a las directivas pragma de código dentro de las definiciones de macro.

#pragma token-string
__pragma(token-string)

Cada implementación de C y C++ soporta algunas funciones únicas de la máquina anfitrión o del sistema operativo. Algunos programas, por ejemplo, deben ejercitar control preciso sobre las áreas de memoria donde se colocan los datos o controlar la manera en que ciertas funciones reciben parámetros. Las directivas #pragma proporcionan un método para que cada compilador ofrezca funciones específicas del equipo o del sistema operativo, conservando a la vez compatibilidad total con los lenguajes C y C++.

Las pragmas, por definición, son específicas al equipo o sistema operativo, y normalmente son diferentes para cada compilador. Las pragmas pueden ser utilizadas en instrucciones condicionales ya sea para proporcionar nueva funcionalidad al pre-procesador, o para proporcionar información definida durante la implementación al compilador.

El token-string es una serie de caracteres que proporcionan instrucciones de compilador y argumentos específicos, si es que existen. El signo de número (#) debe ser el primer carácter no sea un espacio en blanco en la línea que contiene el pragma; caracteres de espacio en blanco pueden separar el signo de número y la palabra "pragma". Después de #pragma, escribir cualquier texto que el traductor puede analizar como símbolos (tokens) de preprocesamiento. El argumento de #pragma está sujeto a la expansión de la macro.

Si el compilador encuentra un pragma no reconoce, emite una advertencia y continúa la compilación.

Los compiladores de Microsoft C y C++ reconocen las siguientes directivas pragma:

1. Compatible sólo con el compilador de C++.

Directivas pragma y las opciones del compilador

Algunos pragmas proporcionan la misma funcionalidad que las opciones del compilador. Cuando un pragma se encuentra en el código fuente, reemplaza el comportamiento especificado por la opción del compilador. Por ejemplo, si ha especificado /Zp8, puede reemplazar esta configuración de compilador en secciones concretas del código con pack:

cl /Zp8 ...

<file> - packing is 8
// ...
#pragma pack(push, 1) - packing is now 1
// ...
#pragma pack(pop) - packing is 8
</file>

La palabra clave de __pragma()

Específico de Microsoft

El compilador también admite la palabra clave __pragma, que tiene la misma funcionalidad que la directiva #pragma, pero puede ser utilizado insertado en una definición de macro. El #pragma no se puede utilizar la directiva en una definición de macro, porque el compilador interpreta el carácter de signo de número ('#') en la directiva del operador de generación de cadenas (#).

En el siguiente ejemplo de código se muestra cómo se puede utilizar la palabra clave __pragma en un macro. Este código es un extracto de la cabecera de mfcdual.h en el ejemplo ACDUAL en "Ejemplos de compatibilidad con COM del compilador":

#define CATCH_ALL_DUAL \
CATCH(COleException, e) \
{ \
_hr = e->m_sc; \
} \
AND_CATCH_ALL(e) \
{ \
__pragma(warning(push)) \
__pragma(warning(disable:6246)) /*disable _ctlState prefast warning*/ \
AFX_MANAGE_STATE(pThis->m_pModuleState); \
__pragma(warning(pop)) \
_hr = DualHandleException(_riidSource, e); \
} \
END_CATCH_ALL \
return _hr; \

Finalizar específicos de Microsoft

Adiciones de comunidad

AGREGAR
Mostrar:
© 2015 Microsoft