On Sun, May 29, 2016 at 03:54:29AM +0200, Kamil Rytarowski wrote: > On 29.05.2016 03:15, David Holland wrote: > > On Sat, May 28, 2016 at 03:45:35PM +0200, Kamil Rytarowski wrote: > > > [iconv const mess] > > > > So it appears that given > > > > size_t > > iconv(iconv_t cd, > > char **restrict src, size_t *restrict srcleft, > > char **restrict dst, size_t *restrict dstleft); > > size_t > > __iconv_const(iconv_t cd, > > const char **restrict src, size_t *restrict srcleft, > > char **restrict dst, size_t *restrict dstleft); > > > > one can do > > > > #define iconv(cd, src, srcleft, dst, dstleft) \ > > _Generic(src, const char **: __iconv_const, default: iconv) \ > > (cd, src, srcleft, dst, dstleft) > > > > and at least with the gcc5 in current it seems to match as intended. > > Plus if anything unexpected comes up #undef iconv makes the magic go > > away. > > > > (Also, because implementing things as macros is not 100% benign it > > should maybe be disabled by default in strict posix mode.) > > > > Anyone want to check if it works in clang? > > This is an interesting exercise to use C11.. however: > 1. Not all ports moved to gcc 4.9+, > 2. pcc doesn't support it, > 3. it won't work as a valid and acceptable C++ code. > 4. Many software expects system headers to be C89, GNU89 etc, and > doesn't request C11.
None of that matters, it just needs to be wrapped in suitable ifdefs. > How about the Solaris 11 move? Leave "extern" option for those who rally > want it and SUS/POSIX for others. "extern" option? -- David A. Holland dholl...@netbsd.org