Se usare -ped flag -pedantic in g ++ o no?

16

Sto imparando C ++ e sto usando g ++ su Linux per esercitarmi.

  1. Voglio sapere se le persone che lavorano come programmatori usano la flag di tipo g ++ e anche la sua importanza nel mondo reale.

  2. E gli altri compilatori, anche loro lo consentono? Questo è diventato uno standard de facto?

Sono interessato perché sto leggendo C ++ Primer in cui l'autore indica che è illegale usare espressioni non-const come dimensione nella definizione dell'array e g ++ lo consente per impostazione predefinita. E potrebbero esserci altre cose di cui non sono a conoscenza.

    
posta user803563 30.06.2011 - 18:48
fonte

4 risposte

20

Sì, assolutamente farlo. In effetti, devi studiare la pagina del manuale e attivare più avvisi rispetto a -pedantic e -Wall .

No, non c'è uno standard. MSVC usa /W4 per esempio.

    
risposta data 30.06.2011 - 18:57
fonte
10

Anche se non ho programmato C ++ per un po 'di tempo, ti consiglierei di usare questo flag. Ti aiuta a creare codice conforme agli standard e renderà la vita di tutti più facile. AFAIK, la maggior parte degli altri compilatori non supporta le estensioni gcc / g ++.

Lo odio, ad esempio, quando non riesco a compilare il codice solo perché lo sviluppatore originale ha deciso di codificare le estensioni del compilatore non standard.

Scommetto che una quantità enorme (diciamo il 20%) dei programmi linux che sono stati scritti in C / C ++ non verrà compilata con altro che gcc / g ++, il che mi rende un po 'triste. Rispetta sempre gli standard.

    
risposta data 30.06.2011 - 18:56
fonte
4

Personalmente uso:

-Wall -Wextra -Wshadow -Weffc ++ -Wittel-aliasing -ansi -pedantic -Werror

Quindi attiva una serie di avvisi, ma in modo più importante considera tutti gli avvertimenti come errori (poiché la maggior parte degli avvisi sono errori logici nel tuo modo di pensare).

    
risposta data 30.06.2011 - 22:58
fonte
1

È essenziale utilizzare il flag -pedantic .

Vorrei solo aggiungere che con lo standard attuale è consigliabile usare qualcosa di simile a:

-std=c++17 -Wall -Wextra -Werror -Wpedantic -pedantic-errors

Dove:

  • -std=c++17 dice di aderire alla revisione dello standard C ++, pubblicato nel 2017, puoi leggi di più qui .

  • -Wall dice a:

    Enable all the warnings about constructions that some users consider questionable, and that are easy to avoid (or modify to prevent the warning), even in conjunction with macros, in other words some set of warnings.

  • -Wextra dice di abilitare altri avvisi, ancora non tutti.

  • -Werror dice di rendere tutti gli avvisi in errore.

  • -Wpedantic o solo -pedantic dice a:

    Issue all the warnings demanded by strict ISO C and ISO C++; reject all programs that use forbidden extensions, and some other programs that do not follow ISO C and ISO C++.

  • -pedantic-errors dice di dare un errore ogni volta che lo standard di base (vedi -Wpedantic) richiede una diagnostica.

Questo set di solito è utile non solo per i principianti, poiché impareranno gradualmente che ogni avviso ha il potenziale per generare errori, ma anche per un uso normale.

Tutte le opzioni di avviso sono descritte in dettaglio qui nella pagina GNU / GCC .

    
risposta data 06.11.2017 - 11:27
fonte

Leggi altre domande sui tag