#define catch?
Scott McCaskill
scott@3dfx.com
Tue Aug 1 10:27:00 GMT 2000
I noticed that pthread.h has a macro that defines 'catch'. (macro
reproduced here for convenience)
/*
* Redefine the C++ catch keyword to ensure that applications
* propagate our internal exceptions up to the library's internal handlers.
*/
#define catch(E) \
catch(Pthread_exception_cancel) \
{ \
throw; \
} \
catch(Pthread_exception_exit) \
{ \
throw; \
} \
catch(E)
This breaks the following legal C++ code (because there will be multiple
catch blocks for Pthread_exception_cancel and Pthread_exception_exit):
try {
// ...
}
catch ( some_exception ) { }
catch ( some_other_exception ) { }
Is this breakage really necessary? I understand the reason for this macro,
but perhaps it should at least be optional? For now, I checked out the tree
and commented it out to work around it (admittedly not a great solution, but
I'm not going to rewrite all my code to only use one catch per try).
Excellent library, BTW.. I'm quite happy to not have to rewrite a bunch of
thread synchronization code for multiple platforms.
--Scott McCaskill
More information about the Pthreads-win32
mailing list