writef %d of string
Stewart Gordon
smjg_1998 at yahoo.com
Sun Dec 4 17:41:15 PST 2011
On 02/12/2011 03:19, bearophile wrote:
> Stewart Gordon:
>
>> It's perfectly legal code,
>
> If that code is legal, then in my opinion it's the rules of the language that are wrong
> and in need to be changed :-)
You mean all programming languages should support CTFE for argument validation?
What if the format string isn't even known at compile time in the first place?
>> Some C(++) compilers understand printf and will warn if the format string doesn't
>> match the arguments, but even this is rare AIUI.
>
> I don't know what 'AIUI' means.
As I understand it.
http://www.acronymfinder.com/ is your friend.
> And GCC (and Clang too) do it, so it's not a rare thing.
I meant rare among the world's various C compilers. Are you going by usage statistics?
>> To enforce well-formed format strings at compile time would require it to be made a
>> language builtin.
>
> Or just a built-in rule, as in GCC.
What do you mean by a "built-in rule" exactly?
>> Or maybe template metaprogramming can do it.
>
> Of course. It's not hard to create something like this: writelnt!"%d %f"(53, 1.55);
>
> But I think you need a D compiler able to remove unneeded template instantiations from
> the binary, to avoid bloat.
<snip>
Maybe there's a way that the template instances can be very small, delegating most of the
work to non-templated functions.
Stewart.
More information about the Digitalmars-d-learn
mailing list