Domanda

Quali opzioni gcc devo usare per applicare avvisi / errori ANSI C (C99)? gcc (GCC) 3.4.2 (mingw-special)

Sto usando: gcc -pedantic -ansi -std = c99 è corretto?

È stato utile?

Soluzione

Il flag -ansi è sinonimo del flag -std = c89 .

Basta usare -std = c99 con -pedantic dovrebbe essere sufficiente.

In caso di dubbio, puoi sempre fare riferimento alla documentazione GCC . A partire da GCC 3.4.2, il capitolo da leggere è 2 - Standard linguistici supportati da GCC .

Altri suggerimenti

Questa è una vecchia domanda, ma volevo solo aggiungere alcuni punti extra.

In primo luogo, indipendentemente dall'insieme di opzioni della riga di comando generiche fornite a GCC, al momento non sembra possibile fare in modo che GCC segnali tutte le violazioni di vincoli come "errori". e tutto il resto come "avvertimenti". Alcuni dei messaggi diagnostici che GCC riporta come "avvisi" sono in effetti violazioni di vincoli (cioè "errori") dal punto di vista del linguaggio C, ma non c'è modo di forzare GCC a riconoscere quel fatto e generare un "errore"; diagnostico. Molto probabilmente una separazione più precisa può essere ottenuta perfezionando i singoli tipi di avviso, ma non sono sicuro che le impostazioni GCC forniscano una granularità sufficiente per ottenere una buona corrispondenza.

In secondo luogo, GCC fornisce l'opzione -pedantic-errors che può essere utilizzata al posto del semplice -pedantic , che ha lo scopo di consentire una più precisa (come descritto sopra) classificazione dei messaggi diagnostici in "errori" e "avvisi". Tuttavia non è ancora perfetto.

P.S. Le specifiche della lingua non richiedono / definiscono la separazione dei messaggi diagnostici in "errori". e "avvisi", ma in pratica molti programmatori prevedono che le violazioni dei vincoli vengano segnalate come "errori". Ho pensato che avresti potuto significare qualcosa del genere quando hai menzionato "applicare avvertenze / errori" nella tua domanda.

-ansi
    In C mode, this is equivalent to -std=c89. In C++ mode, it is equivalent to -std=c++98.

ANSI C non è lo stesso di C99 (ancora). Inoltre, -Wall potrebbe anche essere interessante, ma solo -pedantic dovrebbe fare quello che vuoi.

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