This is the mail archive of the newlib@sourceware.org mailing list for the newlib project.


Index Nav: [Date Index] [Subject Index] [Author Index] [Thread Index]
Message Nav: [Date Prev] [Date Next] [Thread Prev] [Thread Next]
Other format: [Raw text]

Re: stdio.h patches for g++ -std=c++11


On May  8 06:22, zosrothko wrote:
> Hi Corinna
> Le 05/05/2014 14:54, Corinna Vinschen a Ãcrit :
> >Hi,
> >
> >On May  2 19:14, zosrothko wrote:
> >>Hi
> >>
> >>This is a patch for exposing the new stdio functions added by the
> >>c++11 standard. Without this patch the snprintf for example is not
> >>exposed as
> >>
> >>$ cat hello.cpp
> >>#include <cstdio>
> >>
> >>int main(int argc, char** argv) {
> >>char buf[24];
> >>snprintf(buf, 2, "", 2);
> >>return 0;
> >>}
> >>
> >>$ g++ -std=c++11 hello.cpp
> >>hello.cpp: In function âint main(int, char**)â:
> >>hello.cpp:4:30: erreur: âsnprintfâ was not declared in this scope
> >>snprintf("", 2, "", 2);
> >>
> >>$ g++ -xc++ -std=c++11 -dM -E - < /dev/null | sort | grep ANSI
> >>#define __STRICT_ANSI__ 1
> >>
> >>$ g++ -dM -E - < /dev/null | sort | grep ANSI
> >>
> >>$
> >>
> >>Regards
> >I applied a simpler patch which just enables the C99 printf/scanf
> >functions for C++11 using the already existing declaration block.
> I have just checked out the stdio.h with the patch you made but IMO,
> it is not correct. the c++11 standard allows only the functions
> snprintf, vfscanf, vscanf, vsnprintf, and vsscanf. The patch you
> applied will allow all other functions from the existing declaration
> block. This patch will allow a c++ developper to use non standard
> c++11 functions which will preclude the portability of the code on
> another system where the strict adherence will be in place.
> 
> Thus, could you rollback your change and applies the original patch.

The original patch has the downside that it adds double function
declarations.  This is not feasible or, at least, it's not what we do in
any other header file.

If you want to make sure only these functions are declared, it has to be
done using matching #if expressions guarding the existing declarations.


Corinna

-- 
Corinna Vinschen
Cygwin Maintainer
Red Hat

Attachment: pgpsklHmq72aV.pgp
Description: PGP signature


Index Nav: [Date Index] [Subject Index] [Author Index] [Thread Index]
Message Nav: [Date Prev] [Date Next] [Thread Prev] [Thread Next]