Pregunta

Lo que esto C ++ Directiva hacer:? "#Pragma GCC system_header"

¿Fue útil?

Solución

Busqué en Google y consiguió este :

  

#pragma GCC system_header

     
This pragma takes no arguments. It causes the rest of the code in the
current file to be treated as if it came from a system header. Section 2.7
System Headers.

Más información en las cabeceras del sistema

  

2,7. Sistema encabezados

     

Los archivos de cabecera declarar las interfaces   para el sistema operativo y el tiempo de ejecución   bibliotecas a menudo no pueden ser escritos en   estrictamente conforme C. Por lo tanto, GCC   da código que se encuentra en las cabeceras del sistema   tratamiento especial. Todas las advertencias, otra   que los generados por #WARNING   (Capítulo 5 Diagnósticos), son   suprimida mientras GCC está procesando una   cabecera del sistema. Macros definen en una   cabecera del sistema son inmunes a unos pocos   advertencias dondequiera que se expanden.   Esta inmunidad se concede sobre una base ad-hoc   base, cuando nos encontramos con que una advertencia   genera una gran cantidad de falsos positivos   debido al código de macros definidas en   cabeceras del sistema.

     

Normalmente, sólo los encabezados encuentran en   directorios específicos se consideran   cabeceras de sistema. Estos directorios son   determinado cuando se compila GCC. Ahí   Sin embargo, son dos maneras de hacer la normalidad   cabeceras en las cabeceras del sistema.

     

La opción de línea de comandos agrega -isystem   su argumento a la lista de   directorios para buscar las cabeceras,   al igual que -I. Cualquiera de las cabeceras se encuentran en   se considerará que el directorio   cabeceras del sistema.

     

Todos los directorios son nombrados por -isystem   buscado después de todos los directorios llamados   por -I, sin importar su orden era   en la línea de comandos. Si el mismo   directorio se denomina por tanto -I y   -isystem, la opción -I se ignora. GCC proporciona un mensaje informativo   cuando esto ocurre si se utiliza -v.

     

También existe una directiva, #pragma GCC   system_header, que le dice a GCC   tener en cuenta el resto de la corriente   incluir presentar una cabecera del sistema, sin   importa donde se encontró. El código que   viene antes de la pragma en el archivo   no se verá afectada. #pragma GCC   system_header no tiene ningún efecto en el   archivo fuente primaria.

     

En sistemas muy antiguos, algunos de los   directorios de cabecera del sistema de pre-definidos   obtener aún más un tratamiento especial. ÑU   C ++ considera código en las cabeceras que se encuentran en   esos directorios a estar rodeados de   un extern bloque "C". No hay manera   para solicitar este comportamiento con una   #pragma, o desde la línea de comandos.

Otros consejos

Se dice que todo allá de este punto se trata como si estuviera en una cabecera de sistema. Esto significa que todas las advertencias que no sean #warning se suprimen

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