voglio sopprimere variadic avvertimento argomento macro GCC per zero argomenti, prodotti per esempio:Come sopprimere variadic avvertimento argomento macro GCC per zero argomenti per una particolare definizione di macro all'interno di un file sorgente
// for illustration purposes only:
int foo(int i) { return 0; };
#define FOO(A, ...) foo(A, ##__VA_ARGS__)
FOO(1);
^warning: ISO C++11 requires at least one argument for the "..." in a variadic macro
per un particolare definizione di macro all'interno di un file sorgente quando si utilizza GCC 5.3.0.
In clang questo è fatto come segue:
// ... large file
#pragma clang diagnostic push
#pragma clang diagnostic ignored "-Wgnu-zero-variadic-macro-arguments"
#define FOO(A, ...) foo(A, ##__VA_ARGS__)
#pragma clang diagnostic pop
// ... large file
// not necessary on the same file
FOO(1); // doesnt trigger the warning
In gcc Sembra -pedantic
è una magica tipo di tipo di allarme in modo che il seguente non funziona:
// ... large file
#pragma GCC diagnostic push
#pragma GCC diagnostic ignored "-Wpedantic"
#define FOO(A, ...) foo(A, ##__VA_ARGS__)
#pragma GCC diagnostic pop
// ... large file
Solo per essere chiari, l'avviso dovrebbe essere abilitato nell'intero programma tranne in questo particolare frammento di codice. Si tratta di controllo a grana fine. Disabilitare l'avviso in GCC per l'intero programma può essere ottenuto semplicemente non passando -pedantic
al compilatore.
Eventuali duplicati di [GCC bandiera di avvertimento compilatore per zero argomenti macro variadic] (http://stackoverflow.com/questions/35586426/gcc-compiler -warning-flag-for-zero-variadic-macro-arguments) – Zulan
@Zulan la domanda chiede il nome del flag di avviso che abilita disabilita questo avviso. Questa domanda richiede come utilizzare esattamente tale avviso per disabilitare questo avviso in una definizione di macro all'interno di un file sorgente (la tua risposta si adatta meglio qui). – gnzlbg
Vorrei suggerire di modificare la domanda originale per chiarire il tuo intento. – Zulan