On Wednesday, 26 June 2013 at 18:08:10 UTC, bearophile wrote:
[cut]
The most common problem they find are errors in the format
string of printf-like functions (despite the code is C++):
The top type of bug that /analyze finds is format string errors
– mismatches between printf-style format strings and the
corresponding arguments. Sometimes there is a missing argument,
sometimes there is an extra argument, and sometimes the
arguments don’t match, such as printing a float, long or ‘long
long’ with %d.<
Such errors in D are less bad, because writef("%d",x) is usable
for all kind of integral values. On the other hand this D
program prints just "10" with no errors, ignoring the second x:
import std.stdio;
void main() {
size_t x = 10;
writefln("%d", x, x);
}
In a modern statically typed language I'd like such code to
give a compile-time error.
An even better thing would be to have a design which reduce a lot
the probability of format string error, see Scala:
val name = "James"
println(s"Hello, $name")
renoX