Hello Gerrit and Carsten,

 

imho, the configuration checks in OSGConfig.h are incomplete with
respect to the new OSG_DISABLE_MS_ITERATOR_DEBUGGING option. The MS VC++
flag _HAS_ITERATOR_DEBUGGING must be checked independently of the
OSG_DISABLE_MICROSOFT_SECURE_CXXX option. Attached you can find a
'corrected' version of the file. I have taken the liberty to format the
preprocessor statements a little for readibility.

 

Additionally, I'm not sure whether it is clever to check these against
the build configurations, i.e. the following statements...

 

#   if defined(OSG_DISABLE_MICROSOFT_SECURE_CXXX)

...

#   else /* OSG_DISABLE_MICROSOFT_SECURE_CXXX */

...

#       if (defined(NDEBUG) && defined(OSG_DEBUGRT)) ||
(defined(OSG_DEBUG) && defined(_DEBUG))

#           if defined(_SECURE_SCL) && _SECURE_SCL != 1

#               error "mixed up compiler settings, OpenSG libs with
OSG_DISABLE_MICROSOFT_SECURE_CXXX off, but _SECURE_SCL set"

#           endif

#       else

#           if defined(_SECURE_SCL) && _SECURE_SCL != 0

#               error "mixed up compiler settings, OpenSG libs with
OSG_DISABLE_MICROSOFT_SECURE_CXXX off, but _SECURE_SCL set"

#           endif

#       endif

...

#   endif /* OSG_DISABLE_MICROSOFT_SECURE_CXXX */

 

#   if defined(OSG_DISABLE_MS_ITERATOR_DEBUGGING)

...

#   else /* OSG_DISABLE_MS_ITERATOR_DEBUGGING */

#       if defined(_HAS_ITERATOR_DEBUGGING) && ((defined(_DEBUG) &&
_HAS_ITERATOR_DEBUGGING != 1) || (!defined(_DEBUG) &&
_HAS_ITERATOR_DEBUGGING != 0))

#           error "mixed up compiler settings, OpenSG libs with
OSG_DISABLE_MS_ITERATOR_DEBUGGING off, but _HAS_ITERATOR_DEBUGGING set"

#       endif

#   endif /* OSG_DISABLE_MS_ITERATOR_DEBUGGING */

 

Instead of simply...

 

#   if defined(OSG_DISABLE_MICROSOFT_SECURE_CXXX)

...

#   else /* OSG_DISABLE_MICROSOFT_SECURE_CXXX */

...

#       if defined(_SECURE_SCL) && _SECURE_SCL != 1

#               error "mixed up compiler settings, OpenSG libs with
OSG_DISABLE_MICROSOFT_SECURE_CXXX off, but _SECURE_SCL set"

#       endif

...

#   endif /* OSG_DISABLE_MICROSOFT_SECURE_CXXX */

 

#   if defined(OSG_DISABLE_MS_ITERATOR_DEBUGGING)

...

#   else /* OSG_DISABLE_MS_ITERATOR_DEBUGGING */

#       if defined(_HAS_ITERATOR_DEBUGGING) &&  _HAS_ITERATOR_DEBUGGING
!= 1

#           error "mixed up compiler settings, OpenSG libs with
OSG_DISABLE_MS_ITERATOR_DEBUGGING off, but _HAS_ITERATOR_DEBUGGING set"

#       endif

#   endif /* OSG_DISABLE_MS_ITERATOR_DEBUGGING */

 

 

Can you please give a little justification. The MSDN states the
following for 

1.       Checked Iterators: "Checked iterators apply to release builds
and debug builds."

2.       _SECURE_SCL: Defines whether Checked Iterators are enabled

3.       _HAS_ITERATOR_DEBUGGING: "Defines whether the iterator
debugging feature is enabled in a debug build."

 

i.e. the _SECURE_SCL is independent of build configuration and the
_HAS_ITERATOR_DEBUGGING can be defined in non debug configurations
without any effect.

 

Best,

Johannes

 


------------------------------------------------------------------------------
WhatsUp Gold - Download Free Network Management Software
The most intuitive, comprehensive, and cost-effective network 
management toolset available today.  Delivers lowest initial 
acquisition cost and overall TCO of any competing solution.
http://p.sf.net/sfu/whatsupgold-sd
_______________________________________________
Opensg-users mailing list
Opensg-users@lists.sourceforge.net
https://lists.sourceforge.net/lists/listinfo/opensg-users

Reply via email to