Domanda

Ciò C ++ direttiva fare:? "#Pragma GCC system_header"

È stato utile?

Soluzione

Ho cercato su google e ottenuto questo :

  

#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.

Maggiori informazioni sulle intestazioni di sistema

  

2.7. Sistema di intestazioni

     

I file di intestazione dichiarando interfacce   al sistema operativo e il runtime   le biblioteche spesso non possono essere scritti in   strettamente conforme C. Pertanto, GCC   dà codice trovato nelle intestazioni di sistema   trattamento speciale. Tutte le avvertenze, altro   di quelli generati dalla #warning   (Capitolo 5 Diagnostica), sono   soppresso mentre GCC elabora un   intestazione di sistema. Macro definiti in un   intestazione di sistema sono immuni ad alcuni   avvertenze ovunque essi vengono espansi.   Questa immunità è concessa su un ad-hoc   basi, quando troviamo che un avvertimento   genera un sacco di falsi positivi   a causa di codice nella macro definite in   header di sistema.

     

Normalmente, solo le intestazioni trovano in   directory specifiche sono considerati   header di sistema. Questi elenchi sono   determinato quando GCC viene compilato. Là   sono, tuttavia, due modi per rendere normale   intestazioni nelle intestazioni di sistema.

     

L'opzione riga di comando -isystem aggiunge   il suo argomento alla lista delle   directory per la ricerca per le intestazioni,   proprio come -I. Tutte le intestazioni si trovano in   quella directory sarà considerata   header di sistema.

     

Tutte le directory nominati da -isystem sono   cercato dopo tutte le directory di nome   da -I, non importa quale sia il loro ordine era   sulla riga di comando. Se lo stesso   directory è chiamato da entrambi -I e   -isystem, l'opzione -I viene ignorata. GCC fornisce un messaggio informativo   quando questo si verifica se si utilizza -v.

     

C'è anche una direttiva, #pragma GCC   system_header, che racconta GCC a   prendere in considerazione il resto della corrente   includere un file di intestazione di sistema, non   indipendentemente da dove è stato trovato. Il codice che   viene prima il #pragma nel file   non saranno interessati. #pragma GCC   system_header non ha alcun effetto nel   file sorgente primaria.

     

Il molto vecchi sistemi, alcuni dei   elenchi di intestazione di sistema predefiniti   ottenere un trattamento ancora più speciale. GNU   C ++ considera il codice nelle intestazioni si trovano in   queste directory per essere circondati da   un blocco extern "C". Non c'è alcun modo   per richiedere questo comportamento con un   #pragma, o dalla riga di comando.

Altri suggerimenti

Si dice che tutto oltre questo punto viene trattato come se fosse in un colpo di testa del sistema. Ciò significa che tutti gli avvertimenti diversi #WARNING vengono soppresse

Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top