przepraszam z góry, jeśli używam złą terminologią.Jak uzyskać ostrzeżenia o nieprawidłowym formatowaniu napisów (C++)
kiedy kompilacji C++ aplikacja pod gdb i użycia printf() daje mi niesamowite ostrzeżenia odnośnie konsystencji ciąg formatu i argumenty przekazane w
przykład, ten kod.
printf("%s %s", "foo");
powoduje, że ostrzeżenie kompilatora "zbyt mało argumentów dla formatu" jest bardzo użyteczne. poda także ostrzeżenia o typie łańcucha formatu i typie argumentu. musi sprawdzić łańcuch formatu i porównać go z podanymi typami argumentów. - czy ten rodzaj introspekcji podczas kompilacji jest czymś, co można dodać do zwykłego kodu źródłowego, czy też jest to coś, co należy skompilować do samego GCC?
fwi to jest pod gcc 4.2.1 na os x.
Istnieje kilka innych opcji w instrukcji; nie mogą jednak wystarczyć na pokrycie ogólnego przypadku wszystkich funkcji variadycznych. –
huh; sprytny. dzięki Paul. ze strony man: "Atrybut formatu określa, że funkcja przyjmuje argumenty printf, scanf, strftime lub strfmon style, które powinny być sprawdzane pod kątem typu" , więc wygląda na to, że mam własne orzechowe ograniczenia (np. coś innego niż rodzina funkcji printf) nie byłoby to łatwe, ale na stronie, z którą się łączysz, jest cała masa innych interesujących __attributes__. dzięki ! –
Awesome. Ktoś wie, czy kompilator Intel C ma coś podobnego? Nie mogłem znaleźć niczego w instrukcji. – pavon