scuse in anticipo se uso una terminologia scadente.Come ottenere avvisi di formattazione di stringa errata (C++)
Quando compilo un C++ app sotto gdb e l'uso printf() mi dà avvertimenti impressionanti relativi alla consistenza della stringa di formato e gli argomenti passati in
ad esempio, questo codice:.
printf("%s %s", "foo");
genera un avviso del compilatore "troppo pochi argomenti per il formato", che è super-utile. fornirà anche avvertimenti sul tipo di stringa di formato rispetto al tipo di argomento. deve aver ispezionato la stringa di formato e confrontato con i tipi di argomenti forniti. - questa sorta di introspezione in fase di compilazione è qualcosa che può essere aggiunto al codice sorgente ordinario o è qualcosa che deve essere compilato in gcc stesso?
fwiw questo è in gcc 4.2.1 su os x.
Ci sono un sacco di altre opzioni nel manuale; tuttavia non possono essere sufficienti per coprire il caso generale di tutte le funzioni variadiche. –
eh; nifty. grazie Paolo dalla pagina di manuale: "L'attributo di formato specifica che una funzione accetta gli argomenti di stile printf, scanf, strftime o strfmon che dovrebbero essere controllati mediante una stringa di formato" così sembra che abbia i miei limiti nocciola (per esempio qualcosa di diverso dalla famiglia di funzioni printf) questo non farebbe davvero il trucco, ma c'è un sacco di altri __attributes__ interessanti nella pagina a cui sei collegato. Grazie ! –
Fantastico. Qualcuno sa se il compilatore Intel C ha qualcosa di simile? Non ho trovato nulla nel manuale. – pavon