C ++ pragma GCC system_header Directiva
Pregunta
Lo que esto C ++ Directiva hacer:? "#Pragma GCC system_header"
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