Another take on decimal data types
Dmitry Olshansky
dmitry.olsh at gmail.com
Thu Jan 11 22:00:55 UTC 2018
On Thursday, 11 January 2018 at 21:12:59 UTC, kdevel wrote:
> On Thursday, 11 January 2018 at 20:40:01 UTC, Dmitry Olshansky
> wrote:
>>> printf ("%.2f\n", d);
>>
>> C’s printf by definition can’t be customized.
>
> Sure.
>
“”” GNU C Library lets you define “””
Here is your compatibility story.
>> What did you expect?
>
> To be honest: A compile time error. Modern C compilers can
> check such format strings. Example: GCC 6:
1. It’s a warning.
2. There is no typechecking it’s just a hardcoded linting in the
compiler.
3. It’s D use writefln or if going for C primitives know their
quirks.
4. Passing anything but basic types to C vararg is undefined in
C++ IIRC, dunno what D should do about it.
>
> mis.c
> ```
> #include <stdio.h>
>
> int main ()
> {
> double d = 0;
> printf ("%p\n", d);
> return 0;
> }
> ```
>
> $ gcc -Wall mis.c
> mis.c: In function 'main':
> mis.c:6:14: warning: format '%p' expects argument of type 'void
> *', but argument 2 has type 'double' [-Wformat=]
> printf ("%p\n", d);
More information about the Digitalmars-d-announce
mailing list