| /* Test for printf formats. Formats using C2X features. */ |
| /* { dg-do compile } */ |
| /* { dg-options "-std=c2x -pedantic -Wformat" } */ |
| |
| #include "format.h" |
| |
| void |
| foo (unsigned int u, unsigned short us, unsigned char uc, unsigned long ul, |
| unsigned long long ull, uintmax_t uj, size_t z, unsigned_ptrdiff_t ut) |
| { |
| /* Use of %b with each length modifier and other valid features. */ |
| printf ("%b %hb %hhb %lb %llb %jb %zb %tb\n", u, us, uc, ul, ull, uj, z, ut); |
| printf ("%*.*llb\n", 1, 2, ull); |
| printf ("%-b\n", u); |
| printf ("%#b\n", u); |
| printf ("%08b\n", u); |
| /* Flags valid on signed conversions only. */ |
| printf ("%+b\n", u); /* { dg-warning "flag" } */ |
| printf ("% b\n", u); /* { dg-warning "flag" } */ |
| /* Flags ignored in certain combinations. */ |
| printf ("%-08b\n", u); /* { dg-warning "ignored" } */ |
| printf ("%08.5b\n", u); /* { dg-warning "ignored" } */ |
| /* Use of 'L' and 'q' for long long is an extension. */ |
| printf ("%Lb", ull); /* { dg-warning "does not support" } */ |
| printf ("%qb", ull); /* { dg-warning "does not support" } */ |
| } |