2012-03-19 17 views
11

Stiamo eseguendo un po 'di pulizia del codice, riparando i confronti firmati/non firmati, eseguendo analisi statiche, ecc. Sul codice base di C, C++ e Java.Pulizia del codice C/C++ rivela problemi con i macro variadici

Uno degli avvertimenti stiamo ottenendo è

warning: ISO C does not permit named variadic macros 

e la sua compagna di avvertimento

warning: ISO C99 requires rest arguments to be used 

Ora, nel codice C ho usato il C99 standard variadic macro per risolvere il problema, ma nel C++ codice, qual è la risposta corretta? Utilizzando lo stesso stile C99 si ottiene un avviso diverso

warning: anonymous variadic macros were introduced in C99 

per cui non vedo alcuna risposta.

Stiamo usando GCC (G ++) 4.4.3 in Linux.

spero ci sia qualche bandiera, o un altro metodo che può correggere, o disabilitarlo per la sezione specifica del codice - ma la sua per la registrazione che viene utilizzato in quasi tutti i file ...

+0

possibile duplicato del [Sei variadic macro non standard?] (Http://stackoverflow.com/questions/4786649/are-variadic-macros-nonstandard) –

+1

Usare C++ 11. Digitare '-std = C++ 0x' o' -std = C++ 11' sulla riga di comando GCC. O semplicemente ignori l'avvertimento. –

+0

Sì, usare C++ 11 non è ancora nelle carte, non è ancora supportato abbastanza bene (ancora) – Petriborg

risposta

13

Usa l'opzione gcc -Wno-variadic-macros per disabilitare quel particolare avvertimento.

Edit: (dai commenti)

per disattivare l'avviso per una sezione di codice, ma lasciarlo acceso in generale, usare #pragma GCC diagnosticdescribed here.

#pragma GCC diagnostic push 
#pragma GCC diagnostic ignored "-Wno-variadic-macros" 

    // Your code and/or include files 
    // (No variadic warnings here) 

#pragma GCC diagnostic pop 
+1

C'è un modo per disattivare l'avviso per una sezione di codice ma lasciarlo in generale? Se lo utilizzo come disabilito l'avviso: ISO C99 richiede l'uso di argomenti di riposo' – Petriborg

+1

@Petriborg: http://gcc.gnu.org/onlinedocs/gcc-4.6.3/gcc/Diagnostic-Pragmas.html# Diagnostic-Pragmas – Hasturkun

+0

Grazie a @Hasturkun Proverò che – Petriborg