Tipos de directivas pragma en C

Directivas pragma: la directiva pragma se usa para controlar las acciones del compilador en una parte particular de un programa sin afectar el programa como un todo. 

  • Las directivas pragma se incluyen en el programa C para que surtan efecto.
  • El efecto de pragma se aplicará desde el momento en que se incluye hasta el final de la unidad de compilación o hasta que otro pragma cambie de estado.
  • Una directiva #pragma es una instrucción para el compilador y generalmente se ignora durante el preprocesamiento.

Sintaxis:

#string pragma

Aquí, la string puede ser una de las instrucciones dadas al compilador con los parámetros requeridos.         

Instrucción Descripción
DERECHOS DE AUTOR Para especificar una string de derechos de autor
COPYRIGHT_DATE Para especificar una fecha de copyright para la string de copyright
OPTIMIZAR  Para activar o desactivar la función de optimización
LOCALIDAD  Para nombrar un subespacio codificado
OPT_LEVEL Para establecer el nivel de optimización
HP_SHLIB_VERSIÓN Para crear una versión de una rutina de biblioteca compartida
ID DE VERSIÓN Para especificar una string de versión
UNA VEZ Especificar que el archivo se abrió solo una vez

Tipos de Directivas Pragma :

DERECHOS DE AUTOR:

La sintaxis de pragma copyright es:

#pragma «string» de derechos de autor

  • Aquí, la string especifica el conjunto de caracteres incluidos en el mensaje de copyright en el archivo de objeto.
  • Si no se especifican datos durante pragma copyright, entonces se utiliza el año actual en el mensaje de copyright:

Ejemplo: si copy write está escrito de la siguiente manera:

#pragma copyright «GFG Private Limited»

  • Luego, se coloca la siguiente string en el código objeto (suponiendo que el año actual sea 2020):

© Copyright GFG private limited, 2020.
Todos los derechos reservados. Ninguna parte de este programa puede copiarse, reproducirse o transmitirse sin el consentimiento previo por escrito de GFG Private Limited.

Nota: Para ver la string COPYRIGHT así como cualquier otra string en el archivo de objeto, use el comando strings(1) con la opción -a.

Ejemplo:

strings -a NombreArchivoObjeto.o

pragma COPYRIGHT_DATE:

La sintaxis de pragma con derechos de autor es:

#pragma COPYRIGHT_DATE «string»

Aquí, la string es una fecha que será utilizada por el pragma COPYRIGHT. 
Considere el siguiente ejemplo dado a continuación:  

#pragma COPYRIGHT_DATE “2011-2020” 
#pragma copyright “GFG Private Limited”

El pragma anterior colocará la siguiente string en el código objeto:

© Copyright GFG Private Limited, 2011-2020.
Todos los derechos reservados ninguna parte de este programa puede fotocopiarse, reproducirse o transmitirse sin el consentimiento previo por escrito de GFG private limited.

Nota: Para ver la string COPYRIGHT_DATE así como cualquier otra string en el archivo de objeto, use el comando strings(1) con la opción -a .
Ejemplo:

strings -a NombreArchivoObjeto.o

pragma OPT_LEVEL:

La sintaxis de pragma OPT_LEVEL que se utiliza para establecer el nivel de optimización en 1, 2, 3 o 4 es:

# pragma OPT_LEVEL 1
# pragma OPT_LEVEL 2
# pragma OPT_LEVEL 3
# pragma OPT_LEVEL 4

Al igual que el pragma de optimización, incluso el pragma no se puede usar en una función. Finalmente, OPT_LEVEL 3 y 4 solo se permiten al principio del archivo.

A continuación se muestra un fragmento de código de ejemplo en C que ilustra el uso del nivel de opción pragma:

C

aCC - O prog.C
  
#pragma OPT_LEVEL 1
  
      // Optimise func1() at level 1
      void
      Func1()
{
}
  
#pragma OPT_LEVEL 2
  
// Optimize Func2() to at level 2
void Func2()
{
}

pragma OPTIMIZAR:

La sintaxis de usar el pragma OPTIMIZAR es:

#pragma OPTIMIZAR ON
#pragma OPTIMIZAR OFF

  • La optimización pragma se utiliza básicamente para activar/desactivar la optimización en la sección del programa fuente.
  • Sin embargo, cuando se usa el pragma especifica una de las opciones de optimización en el comando ACC (al dar el comando para compilar el programa), de lo contrario, este pragma se ignora.
  • Además, recuerde que la optimización de pragma no se puede usar dentro de una función.

A continuación se muestra un fragmento de código de ejemplo en C que ilustra el uso del pragma de optimización:

C++

// Set optimization to level 2
// for Prog.C
aCC + O2 Prog.C
  
#pragma OPTIMISE OFF
      void Func1
{
    // Turn off optimization for
    // this function
}
  
#pragma OPTIMISE ON
Void Func2()
{
    // Restore optimization to level 2
}

pragma HP_SHLIB_VERSION :

La sintaxis de HP_SHLIB_VERSION que se utiliza para crear diferentes versiones de la rutina de la biblioteca compartida es:

#pragma HP_SHLIB_VERSION [“]fecha[“]

Ejemplo:

#pragma HP_SHLIB_VERSION [“]12/20[“]

  • Aquí, el argumento de datos tiene la forma mes/año, opcionalmente entre comillas.
  • El mes debe especificarse utilizando cualquier número del 1 al 12.
  • El año se puede especificar como los dos últimos dígitos del año (11 para 2011) o como una especificación de año completo (2011).
  • Estos son los códigos reales de dos dígitos del 11 al 20 que se utilizan para representar el año del 2011 al 2020, respectivamente.
  • El pragma debe usarse solo si se realizan cambios incompatibles en un archivo fuente.

pragma LOCALIDAD:

La sintaxis de la localidad de pragma que se utiliza para especificar el nombre que se asociará con el código que se escribe en un módulo de objeto reubicable es:

#pragma LOCALIDAD “string”

Ejemplo:

#pragma LOCALIDAD “Geeks para Geeks”

  • En el ejemplo anterior, la string («Geeks For Geeks») especifica un nombre que se usará para un subespacio codificado.
  • Después de esta directiva, todo el código que sigue a la directiva se asocia con el nombre especificado en la string.
  • El alcance más pequeño de un pragma de LOCALIDAD único es una función.

ID DE LA VERSIÓN pragma:

La sintaxis de pragma VERSION ID se puede dar como:  

#pragma ID DE VERSIÓN «string»

Aquí string es una string de caracteres que se coloca en el archivo de objeto. 

Ejemplo:

#pragma VERSIONID «GFG privado limitado, versión 1234 5.8.0 1.10»

En el ejemplo anterior, el pragma coloca los geeks de personajes para GFG private limited, versión 1234 5.8.0 1.10 en el archivo de objeto.

pragma una vez:

El pragma especifica una vez que el archivo en el que se especifica este directorio de pragma se incluirá abierto solo una vez por el compilador en una construcción de un archivo en particular. Su sintaxis se puede dar como: 

#pragma una vez

Conclusión:

  • La directiva de preprocesador pragma se utiliza principalmente cuando cada implementación de C admite algunas funciones exclusivas de su máquina host o sistema operativo .
  • Por ejemplo, algunos programas pueden necesitar ejercer un control preciso sobre las áreas de memoria donde se colocan los datos o controlar la forma en que ciertas funciones reciben parámetros en tales casos, las directivas #pragma brindan características específicas del sistema operativo para cada compilador mientras conservan la compatibilidad general. con el lenguaje C.

Publicación traducida automáticamente

Artículo escrito por ayushraj2122 y traducido por Barcelona Geeks. The original can be accessed here. Licence: CCBY-SA

Deja una respuesta

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *