Path: csiph.com!eternal-september.org!feeder.eternal-september.org!nntp.eternal-september.org!.POSTED!not-for-mail From: Keith Thompson Newsgroups: comp.lang.c Subject: Re: printf and time_t Date: Fri, 06 Feb 2026 04:49:54 -0800 Organization: None to speak of Lines: 53 Message-ID: <87a4xm82a5.fsf@example.invalid> References: <10jfol6$2u6r8$1@news.xmission.com> <20260108012620.000041a9@yahoo.com> <87bjj5gei4.fsf@example.invalid> <20260108023846.0000260c@yahoo.com> <10jpi8h$15aea$1@dont-email.me> <20260109141859.00004f22@yahoo.com> <10jv3rb$15aea$2@dont-email.me> <20260111132015.000026ad@yahoo.com> <86zf6kkjw0.fsf@linuxsc.com> <20260111235104.00001463@yahoo.com> <86ms1pj0bc.fsf@linuxsc.com> <10ltjjt$1o4pk$1@dont-email.me> <865x8cio5y.fsf@linuxsc.com> <10lvt1s$2fu8f$1@dont-email.me> <10lvul0$2gps1$1@dont-email.me> <10m024m$2hqvi$1@dont-email.me> <10m091i$2kiff$1@dont-email.me> <10m0b0g$2l6li$1@dont-email.me> <10m1vl7$35irp$1@dont-email.me> <87wm0r80zj.fsf@example.invalid> <86wm0qgmtm.fsf@linuxsc.com> MIME-Version: 1.0 Content-Type: text/plain Injection-Date: Fri, 06 Feb 2026 12:49:55 +0000 (UTC) Injection-Info: dont-email.me; posting-host="44e384fb3fd0ff728a4bb0cd5ce7cfc9"; logging-data="180090"; mail-complaints-to="abuse@eternal-september.org"; posting-account="U2FsdGVkX19JpKg2fxTEGv8pYrF8i7jw" User-Agent: Gnus/5.13 (Gnus v5.13) Cancel-Lock: sha1:Pnlb4rA2ekgxNvKjyNkJuFhbuNk= sha1:3AR25RfaSPqpNTgzdzUyBAYdxns= Xref: csiph.com comp.lang.c:396625 Tim Rentsch writes: > Keith Thompson writes: [...] >> I recently played around with an attempted framework using _Generic. >> The goal was to be able to write something like >> >> print(s(x), s(y), s(z)); >> >> where x, y, and z can be of more or less arbitrary types (integer, >> floating-point char*). The problem I ran into was that only one of >> the generic associations is evaluated (which one is determined at >> compile time), but *all* of them have to be valid code. > > That is annoying but it shouldn't be too hard to work around > it. To verify that hypothesis I wrote this test case: > > > #include > #include > #include > > #include "h/show.h" > > int > main(){ [30 lines deleted] > show( > uc,sc,us,ss,ui,si,ul,sl,ull,sll, > c,f,d,ld,yes,no,u16,s16,uge32,sge32, > runtime,now,offset,uf32,sf32, > c * now / 1e8 * ld, > foo, bas > ); > printf( "\n" ); > > return 0; > } > > which compiles under C11 and (along with the show.h include file) > produces output: > > uc = 255 > sc = -1 > us = 65535 [23 lines deleted] > foo = "foo" > bas = (const char *) "bas" Were you planning to show us what show.h looks like? -- Keith Thompson (The_Other_Keith) Keith.S.Thompson+u@gmail.com void Void(void) { Void(); } /* The recursive call of the void */