incubator-stdcxx-dev mailing list archives

Site index · List index
Message view « Date » · « Thread »
Top « Date » · « Thread »
From Martin Sebor <se...@roguewave.com>
Subject Re: svn commit: r565959 - /incubator/stdcxx/trunk/etc/config/src/EXTERN_C_EXCEPTIONS.cpp
Date Tue, 21 Aug 2007 19:25:16 GMT
Farid Zaripov wrote:
>> -----Original Message-----
>> From: Martin Sebor [mailto:sebor@roguewave.com] 
>> Sent: Tuesday, August 21, 2007 9:26 PM
>> To: stdcxx-dev@incubator.apache.org
>> Subject: Re: svn commit: r565959 - 
>> /incubator/stdcxx/trunk/etc/config/src/EXTERN_C_EXCEPTIONS.cpp
>>
>>>   There's no #pragma for that, but we can compile all cpp 
>> files with 
>>> /Ehsc, and some set of specified files with /EHs.
>> Okay, that's something to consider. We'll have to see how 
>> pervasive the use of __rw_once() will be as soon as I'm done 
>> switching to it (so far I think it'll be needed in only a 
>> handful of places) and whether any of the initialization 
>> functions will potentially throw.
> 
>   I've just tried to declare and define __rw_once with throw(...)
> exception
> specification and compiler doesn't issues warning in that case.

Good to know! We still need to decide how to handle this in
the general case (for compilers that behave like MSVC, if
there are any) but we can certainly start using this extension
to silence the MSVC warnings.

> 
>> Btw., from the MSVC Exception Handling Model:
>> http://msdn2.microsoft.com/en-us/library/1deeycx5(VS.80).aspx
>> it looks like by default the compiler generates code that 
>> makes catch blocks catch structured exceptions (in addition 
>> the C++ kind). That's generally considered bad practice, but 
>> it may be relied on by user code for historical reasons. We 
>> need to be careful not to impose requirements on our users 
>> that would go against this historical practice (doing so 
>> could break working code).
> 
>   It was by default only in MSVC versions prior 7.0 (because
> the only asynhronous exceptions handling model was implemented.
> Since MSVC 7.0 they added synhronous exceptions handling
> model and this model is used by default.

Thanks for the clarification! I've also discovered it in the
docs since I sent my mail.

Martin

Mime
View raw message