Компилятор Microsoft Visual C++, сокращенно VC++, является очень популярным компилятором, но не реализует стандартный препроцессор C++ правильно в ряде аспектов. Из-за этого программист, использующий VMD, должен время от времени делать что-то по-другому, когда используется VC++. Эти «причуды» VC++ были максимально сглажены в библиотеке VMD, но упоминаются в дальнейших темах и иногда должны быть рассмотрены программистом, использующим VMD.
VMD имеет макрос, который указывает, когда используется компилятор VC++. Макро — объектоподобный макрос, называемый BOOST_VMD_MSVC. Он устанавливается на 1 при использовании VC++ и устанавливается на 0, когда VC++ не используется. Вы можете использовать этот макрос в своем собственном макрокоде, когда вы включаете файл заголовка VMD для написания кода, который может потребовать специальной обработки для VC++, как описано в этой документации. Поэтому ваша макрообработка может иногда принимать форму:
#include <boost/vmd/some_header.hpp>
#if BOOST_VMD_MSVC
#define SOME_MACRO ... code for VC++
#else
#define SOME_MACRO ... code for all other compilers
#endif