Upgrading to 4.15 with Boost: Warning C4668

After upgrading to 4.15 from 4.14, building my project now yields lots of C4668 warnings “‘XYZ’ is not defined as a preprocessor macro, replacing with ‘0’ for ‘#if/#elif’”. These warnings are occurring in many headers from the boost library. Here is an excerpt from my build log:

1>C:\AxonVR\Libraries\ThirdParty\Boost\boost-1_58\include\boost/predef/other/endian.h(143): warning C4668: 'BOOST_ARCH_PARISK' is not defined as a preprocessor macro, replacing with '0' for '#if/#elif'
1>C:\AxonVR\Libraries\ThirdParty\Boost\boost-1_58\include\boost/predef/other/endian.h(151): warning C4668: 'BOOST_ARCH_AMD64' is not defined as a preprocessor macro, replacing with '0' for '#if/#elif'
1>C:\AxonVR\Libraries\ThirdParty\Boost\boost-1_58\include\boost/smart_ptr/shared_ptr.hpp(738): warning C4668: '__GNUC__' is not defined as a preprocessor macro, replacing with '0' for '#if/#elif'
1>C:\AxonVR\Libraries\ThirdParty\Boost\boost-1_58\include\boost/asio/detail/impl/win_iocp_handle_service.ipp(244): warning C4191: 'type cast': unsafe conversion from 'FARPROC' to 'cancel_io_ex_t'
1>          Calling this function through the result pointer may cause your program to fail
1>C:\AxonVR\Libraries\ThirdParty\Boost\boost-1_58\include\boost/ratio/config.hpp(16): warning C4668: '__GNUC__' is not defined as a preprocessor macro, replacing with '0' for '#if/#elif'
1>C:\AxonVR\Libraries\ThirdParty\Boost\boost-1_58\include\boost/ratio/detail/ratio_io.hpp(121): warning C4668: 'BOOST_RATIO_HAS_UNICODE_SUPPORT' is not defined as a preprocessor macro, replacing with '0' for '#if/#elif'
1>C:\AxonVR\Libraries\ThirdParty\Boost\boost-1_58\include\boost/ratio/detail/ratio_io.hpp(180): warning C4668: 'BOOST_RATIO_HAS_UNICODE_SUPPORT' is not defined as a preprocessor macro, replacing with '0' for '#if/#elif'
1>C:\AxonVR\Libraries\ThirdParty\Boost\boost-1_58\include\boost/ratio/detail/ratio_io.hpp(238): warning C4668: 'BOOST_RATIO_HAS_UNICODE_SUPPORT' is not defined as a preprocessor macro, replacing with '0' for '#if/#elif'
1>C:\AxonVR\Libraries\ThirdParty\Boost\boost-1_58\include\boost/ratio/detail/ratio_io.hpp(296): warning C4668: 'BOOST_RATIO_HAS_UNICODE_SUPPORT' is not defined as a preprocessor macro, replacing with '0' for '#if/#elif'
1>C:\AxonVR\Libraries\ThirdParty\Boost\boost-1_58\include\boost/ratio/detail/ratio_io.hpp(354): warning C4668: 'BOOST_RATIO_HAS_UNICODE_SUPPORT' is not defined as a preprocessor macro, replacing with '0' for '#if/#elif'
1>C:\AxonVR\Libraries\ThirdParty\Boost\boost-1_58\include\boost/ratio/detail/ratio_io.hpp(412): warning C4668: 'BOOST_RATIO_HAS_UNICODE_SUPPORT' is not defined as a preprocessor macro, replacing with '0' for '#if/#elif'
1>C:\AxonVR\Libraries\ThirdParty\Boost\boost-1_58\include\boost/ratio/detail/ratio_io.hpp(470): warning C4668: 'BOOST_RATIO_HAS_UNICODE_SUPPORT' is not defined as a preprocessor macro, replacing with '0' for '#if/#elif'
1>C:\AxonVR\Libraries\ThirdParty\Boost\boost-1_58\include\boost/ratio/detail/ratio_io.hpp(529): warning C4668: 'BOOST_RATIO_HAS_UNICODE_SUPPORT' is not defined as a preprocessor macro, replacing with '0' for '#if/#elif'
1>C:\AxonVR\Libraries\ThirdParty\Boost\boost-1_58\include\boost/ratio/detail/ratio_io.hpp(594): warning C4668: 'BOOST_RATIO_HAS_UNICODE_SUPPORT' is not defined as a preprocessor macro, replacing with '0' for '#if/#elif'
1>C:\AxonVR\Libraries\ThirdParty\Boost\boost-1_58\include\boost/ratio/detail/ratio_io.hpp(653): warning C4668: 'BOOST_RATIO_HAS_UNICODE_SUPPORT' is not defined as a preprocessor macro, replacing with '0' for '#if/#elif'
1>C:\AxonVR\Libraries\ThirdParty\Boost\boost-1_58\include\boost/ratio/detail/ratio_io.hpp(711): warning C4668: 'BOOST_RATIO_HAS_UNICODE_SUPPORT' is not defined as a preprocessor macro, replacing with '0' for '#if/#elif'
1>C:\AxonVR\Libraries\ThirdParty\Boost\boost-1_58\include\boost/ratio/detail/ratio_io.hpp(770): warning C4668: 'BOOST_RATIO_HAS_UNICODE_SUPPORT' is not defined as a preprocessor macro, replacing with '0' for '#if/#elif'
1>C:\AxonVR\Libraries\ThirdParty\Boost\boost-1_58\include\boost/ratio/detail/ratio_io.hpp(829): warning C4668: 'BOOST_RATIO_HAS_UNICODE_SUPPORT' is not defined as a preprocessor macro, replacing with '0' for '#if/#elif'
1>C:\AxonVR\Libraries\ThirdParty\Boost\boost-1_58\include\boost/ratio/detail/ratio_io.hpp(887): warning C4668: 'BOOST_RATIO_HAS_UNICODE_SUPPORT' is not defined as a preprocessor macro, replacing with '0' for '#if/#elif'
1>C:\AxonVR\Libraries\ThirdParty\Boost\boost-1_58\include\boost/ratio/detail/ratio_io.hpp(946): warning C4668: 'BOOST_RATIO_HAS_UNICODE_SUPPORT' is not defined as a preprocessor macro, replacing with '0' for '#if/#elif'
1>C:\AxonVR\Libraries\ThirdParty\Boost\boost-1_58\include\boost/ratio/detail/ratio_io.hpp(1004): warning C4668: 'BOOST_RATIO_HAS_UNICODE_SUPPORT' is not defined as a preprocessor macro, replacing with '0' for '#if/#elif'

Is there anything I can do about these warnings?

There’s a new setting for this in

Engine\Source\Programs\UnrealBuildTool\Configuration\ModuleRules.cs

public bool bEnableUndefinedIdentifierWarnings = true;

You can override that per module or just turn it off globally in that file.

This happened to me when I mistakenly built for Win-32 instead of Win-64. I was very confused until I looked at the “Packaging project for…” window.