41 lines
1.7 KiB
Plaintext
41 lines
1.7 KiB
Plaintext
[/
|
|
(C) Copyright Edward Diener 2011-2015
|
|
Distributed under the Boost Software License, Version 1.0.
|
|
(See accompanying file LICENSE_1_0.txt or copy at
|
|
http://www.boost.org/LICENSE_1_0.txt).
|
|
]
|
|
|
|
[section:vmd_vc Visual C++ define]
|
|
|
|
Microsoft's Visual C++ compiler, abbreviated VC++, is a very popular compiler
|
|
but does not implement the standard C++ preprocessor correctly in a number of respects
|
|
in its default preprocessor. Because of this the programmer using the VMD needs to
|
|
occasionally do things differently when VC++ is being used. These "quirks" of VC++
|
|
have been smoothed over as much as possible in the VMD library, but are mentioned
|
|
in further topics and occasionally must be addressed by the programmer using VMD.
|
|
|
|
The VMD has a macro that indicates when the VC++ default preprocessor is being used.
|
|
The macro is an object-like macro called BOOST_VMD_MSVC. It is set to 1 when VC++'s
|
|
default preprocessor is being used and set to 0 when VC++'s default preprocessore
|
|
is not being used. You can use this macro in your own macro code whenever you include
|
|
a VMD header file to write code which may need special processing for VC++ as outlined
|
|
in this documentation. Your macro processing may therefore occasional take the form of:
|
|
|
|
#include <boost/vmd/some_header.hpp>
|
|
|
|
#if BOOST_VMD_MSVC
|
|
|
|
#define SOME_MACRO ... code for VC++ using its default preprocessor
|
|
|
|
#else
|
|
|
|
#define SOME_MACRO ... code for all other compilers
|
|
|
|
#endif
|
|
|
|
The BOOST_VMD_MSVC macro only applies when the VC++ default preprocessor is being used.
|
|
It does not apply when VC++'s new standard conforming preprocessor, currently activated by the
|
|
`/Zc:preprocessor` command line option, is being used.
|
|
|
|
[endsect]
|