Bug in sys/wait.h with C++
Christian Franke
Christian.Franke@t-online.de
Wed Feb 8 06:37:00 GMT 2012
Christopher Faylor wrote:
> On Tue, Feb 07, 2012 at 08:39:46PM -0600, Yaakov (Cygwin/X) wrote:
>> Just came across an issue with<sys/wait.h> in C++. STC:
>>
>> $ cat test.c
>> #include<stddef.h>
>> #include<sys/wait.h>
>> int main(void) { wait(NULL); return 0; }
>>
>> $ gcc -Wall test.c
>>
>> $ gcc -x c++ -Wall test.c
>> test.c: In function ???int main()???:
>> test.c:2:27: error: call of overloaded ???wait(NULL)??? is ambiguous
>> /usr/include/sys/wait.h:37:7: note: candidates are: pid_t wait(int*)
>> /usr/include/sys/wait.h:82:14: note: pid_t wait(wait*)
>>
>> This code compiles cleanly on Linux.
> I guess we have to incorporate Linux's head-standing in
> /usr/include/sys/wait.h to allow both the use of union wait * and int as
> arguments to wait().
Yes. Unfortunately the typesafe approach from
http://cygwin.com/ml/cygwin-patches/2011-q4/msg00003.html
does not work with NULL (0 in C++), sorry.
Workaround: wait((int *)0) or wait((union wait *)0);
> Anyone want to send a patch to cygwin-patches?
I'll do soon.
Christian
--
Problem reports: http://cygwin.com/problems.html
FAQ: http://cygwin.com/faq/
Documentation: http://cygwin.com/docs.html
Unsubscribe info: http://cygwin.com/ml/#unsubscribe-simple
More information about the Cygwin
mailing list