2012-08-16 5 views
9

¿Cuál es el uso de "#pragma section <XYZ>" en C?¿Cuál es el uso de "#pragma sección <XYZ>" en C?

me he encontrado archivo de código C, donde se utilizó el siguiente tipo: -

#define XYZ "ITEM 26.G03" 

#pragma section <XYZ> 

donde XYZ es: #define XYZ "ITEM 26.G03"

Necesito un poco de explicación sobre el uso de "#pragma section"

+0

http://stackoverflow.com/questions/9716637/what-is-the-use-of-pragma-code-section-and-data-section – codejammer

+0

Puede aceptar la respuesta si esto lo ayuda. Además, los futuros visitantes se verán beneficiados con eso. – Jaguar

Respuesta

4

Sección crea una sección en un archivo .obj.
Consulte MSDN para obtener más información.

El código y los datos se generan en secciones en un archivo de objeto, combinados por el vinculador en un archivo ejecutable y finalmente ubicados en la memoria de destino en ubicaciones específicas. Las secciones predeterminadas están predefinidas y tienen ciertos atributos. La sección pragmas se puede usar para cambiar los atributos predeterminados, definir nuevas secciones y controlar la asignación de código y variables a secciones particulares y, junto con el archivo de comando del enlazador, sus ubicaciones.

#pragma section define una clase de sección, y opcionalmente, una o dos secciones en la clase. Una clase de sección controla el direccionamiento y la accesibilidad de las variables y el código colocado en una instancia de la clase.

7

La directiva #pragma es una directiva específica de implementación, es una forma estándar de proporcionar información adicional al compilador. Esta directiva tiene la siguiente forma:

#pragma name 

Si el preprocesador reconoce el "nombre" se especifica, se lleva a cabo cualquier acción que representan, o pasa a información sobre el compilador. Si la implementación de c no admite "nombre" se ignora.

Por ejemplo compilador de gcc acepta la lista de pragmas enumerados here.

Para el #pragma section, la documentación de gcc dijo:

sección ("nombre-sección") Normalmente, el compilador coloca el código que genera en la sección de texto. A veces, sin embargo, necesita secciones adicionales , o necesita ciertas funciones particulares para aparecer en las secciones especiales . El atributo de sección especifica que una función vive en una sección particular. Por ejemplo, la declaración:

 extern void foobar (void) __attribute__ ((section ("bar"))); 

pone la función foobar en la sección de la barra.

Algunos formatos de archivo no admiten secciones arbitrarias, por lo que el atributo de sección no está disponible en todas las plataformas. Si necesita asignar el contenido completo de de un módulo a una sección en particular, considere usar las instalaciones del vinculador en su lugar.

Más sobre ese here.

Cuestiones relacionadas