On 12/10/2011 23:41, bearophile wrote:
This code, that a sane language/language implementation refuses at 
compile-time, runs:

It's perfectly legal code, so the best a compiler can correctly do is give a warning. Some C(++) compilers understand printf and will warn if the format string doesn't match the arguments, but even this is rare AIUI.

To enforce well-formed format strings at compile time would require it to be made a language builtin. Or maybe template metaprogramming can do it.

import std.stdio;
void main() {
     writefln("%d", "hello");
}


And it outputs:
['h', 'e', 'l', 'l', 'o']

Is this good/expected/acceptable/buggy?

It certainly should either throw an exception or generate more sane output such as Andrej is getting. What DMD version are you using?

Stewart.

Reply via email to