|
Boost : |
From: Chris Newbold (Chris.Newbold_at_[hidden])
Date: 2008-04-28 08:41:52
On Fri, 25 Apr 2008 12:52:57 -0700, Mat Marcus wrote:
> On Fri, Apr 25, 2008 at 8:40 AM, Roland Schwarz
> <roland.schwarz_at_[hidden]> wrote:
>>
>> How about putting:
>> <toolset-msvc:version>8.0:<define>_CRT_SECURE_NO_DEPRECATE
>> <toolset-msvc:version>8.0:<define>_SCL_SECURE_NO_DEPRECATE
>>
>> Into the requirements section of your project?
>
> Those are about whether the compiler should emit warnings when using std
> STL constructs that MS deems unsafe. They have nothing to do with the
> performance penalty alleviated by setting _SECURE_SCL=0. The problem is
> that we, I believe unintentionally, ship a build system that penalizes
> release builds by default.
It's even worse than that. Toggling between _SECURE_SCL=0 and the
(default) _SECURE_SCL=1 changes the ABI for Microsoft's standard library.
Combining code built one way with code built the other way results in
some fantastically undefined behavior.
(The main culprit is that the definitions of iterators change
drastically, gaining additional data members for _SECURE_SCL=1.)
-Chris
Boost list run by bdawes at acm.org, gregod at cs.rpi.edu, cpdaniel at pacbell.net, john at johnmaddock.co.uk