Details
-
Bug
-
Resolution: Out of scope
-
P3: Somewhat important
-
None
-
5.1.1
-
None
-
Microsoft (R) 32-bit C/C++ Optimizing Compiler Version 16.00.40219.01 for 80x86
Description
When compiling qtbase MSVC2010 SP1 generates lots of C4275 warnings:
... C:\Program Files (x86)\Microsoft Visual Studio 10.0\VC\INCLUDE\typeinfo(157) : warning C4275: non dll-interface class 'stdext::exception' used as base for dll-interface class 'std::bad_cast' C:\Program Files (x86)\Microsoft Visual Studio 10.0\VC\INCLUDE\exception(218) : see declaration of 'stdext::exception' C:\Program Files (x86)\Microsoft Visual Studio 10.0\VC\INCLUDE\typeinfo(156) : see declaration of 'std::bad_cast' C:\Program Files (x86)\Microsoft Visual Studio 10.0\VC\INCLUDE\typeinfo(178) : warning C4275: non dll-interface class 'stdext::exception' used as base for dll-interface class 'std::bad_typeid' C:\Program Files (x86)\Microsoft Visual Studio 10.0\VC\INCLUDE\exception(218) : see declaration of 'stdext::exception' C:\Program Files (x86)\Microsoft Visual Studio 10.0\VC\INCLUDE\typeinfo(177) : see declaration of 'std::bad_typeid' cl -c -nologo -Zm200 -Zc:wchar_t -O2 -MD -Oy- -Gy -GS -Gm- -EHsc -W4 -wd4100 -wd4127 -wd4189 -wd4239 -wd4244 -wd4245 -wd4512 -wd4702 -DUNICODE -DWIN32 -D_WINDOWS -D_UNICODE -D_CRT_SECURE_NO_DEPRECATE -D_HAS_EXCEPTIONS=0 -DNOMINMAX -DWIN32_LEAN_AND_MEAN=1 -D_WIN32_WINNT=0x0600 -DWINVER=0x0600 -DANGLE_DISABLE_TRACE -DANGLE_DISABLE_PERF -DANGLE_COMPILE_OPTIMIZATION_LEVEL=D3DCOMPILE_OPTIMIZATION_LEVEL0 -DANGLE_USE_NEW_PREPROCESSOR=1 -DNDEBUG -D_SECURE_SCL=0 -DQT_NO_DYNAMIC_CAST -I"D:\dev\qt\qt-rls\src\qtbase\src\3rdparty\angle\src\compiler\preprocessor" -I"." -I"..\..\..\..\..\mkspecs\win32-msvc2010" -Fo.obj\release_shared\ @C:\Users\kkoehne\AppData\Local\Temp\ExpressionParser.obj.1148.1141.jom ExpressionParser.cpp C:\Program Files (x86)\Microsoft Visual Studio 10.0\VC\INCLUDE\typeinfo(157) : warning C4275: non dll-interface class 'stdext::exception' used as base for dll-interface class 'std::bad_cast' C:\Program Files (x86)\Microsoft Visual Studio 10.0\VC\INCLUDE\exception(218) : see declaration of 'stdext::exception' C:\Program Files (x86)\Microsoft Visual Studio 10.0\VC\INCLUDE\typeinfo(156) : see declaration of 'std::bad_cast' C:\Program Files (x86)\Microsoft Visual Studio 10.0\VC\INCLUDE\typeinfo(178) : warning C4275: non dll-interface class 'stdext::exception' used as base for dll-interface class 'std::bad_typeid' C:\Program Files (x86)\Microsoft Visual Studio 10.0\VC\INCLUDE\exception(218) : see declaration of 'stdext::exception' C:\Program Files (x86)\Microsoft Visual Studio 10.0\VC\INCLUDE\typeinfo(177) : see declaration of 'std::bad_typeid' lib /NOLOGO /OUT:..\..\..\..\..\lib\preprocessor.lib @C:\Users\kkoehne\AppData\Local\Temp\preprocessor.lib.1148.2187.jom ( if not exist Makefile.translator_common D:\dev\qt\qt-rls\msvc-2010-32\qtbase\bin\qmake D:\dev\qt\qt-rls\src\qtbase\src\angle\src\compiler\translator_common.pro -o Makefile.translator_common ) && C:\jom\jom.exe -f Makefile.translator_common C:\jom\jom.exe -f Makefile.translator_common.Debug all cl -c -nologo -Zm200 -Zc:wchar_t -Zi -MDd -Oy- -Gy -GS -Gm- -RTC1 -EHsc -GR -W4 -wd4100 -wd4127 -wd4189 -wd4239 -wd4244 -wd4245 -wd4512 -wd4702 -DUNICODE -DWIN32 -D_WINDOWS -D_UNICODE -D_CRT_SECURE_NO_DEPRECATE -D_HAS_EXCEPTIONS=0 -DNOMINMAX -DWIN32_LEAN_AND_MEAN=1 -D_WIN32_WINNT=0x0600 -DWINVER=0x0600 -DANGLE_DISABLE_TRACE -DANGLE_DISABLE_PERF -DANGLE_COMPILE_OPTIMIZATION_LEVEL=D3DCOMPILE_OPTIMIZATION_LEVEL0 -DANGLE_USE_NEW_PREPROCESSOR=1 -D_DEBUG -D_SECURE_SCL=0 -D_LIB -DCOMPILER_IMPLEMENTATION -I"D:\dev\qt\qt-rls\src\qtbase\src\angle\src\compiler" -I"D:\dev\qt\qt-rls\src\qtbase\src\angle\src" -I"D:\dev\qt\qt-rls\src\qtbase\src\angle\src\..\include" -I"D:\dev\qt\qt-rls\src\qtbase\src\3rdparty\angle\src" -I"D:\dev\qt\qt-rls\src\qtbase\src\3rdparty\angle\include" -I"." -I"..\..\..\..\mkspecs\win32-msvc2010" -Fo.obj\debug_shared\ @C:\Users\kkoehne\AppData\Local\Temp\BuiltInFunctionEmulator.obj.940.47.jom BuiltInFunctionEmulator.cpp Compiler.cpp debug.cpp DetectRecursion.cpp C:\Program Files (x86)\Microsoft Visual Studio 10.0\VC\INCLUDE\typeinfo(157) : warning C4275: non dll-interface class 'stdext::exception' used as base for dll-interface class 'std::bad_cast' C:\Program Files (x86)\Microsoft Visual Studio 10.0\VC\INCLUDE\exception(218) : see declaration of 'stdext::exception' C:\Program Files (x86)\Microsoft Visual Studio 10.0\VC\INCLUDE\typeinfo(156) : see declaration of 'std::bad_cast' C:\Program Files (x86)\Microsoft Visual Studio 10.0\VC\INCLUDE\typeinfo(178) : warning C4275: non dll-interface class 'stdext::exception' used as base for dll-interface class 'std::bad_typeid' C:\Program Files (x86)\Microsoft Visual Studio 10.0\VC\INCLUDE\exception(218) : see declaration of 'stdext::exception' C:\Program Files (x86)\Microsoft Visual Studio 10.0\VC\INCLUDE\typeinfo(177) : see declaration of 'std::bad_typeid' C:\Program Files (x86)\Microsoft Visual Studio 10.0\VC\INCLUDE\typeinfo(157) : warning C4275: non dll-interface class 'stdext::exception' used as base for dll-interface class 'std::bad_cast' C:\Program Files (x86)\Microsoft Visual Studio 10.0\VC\INCLUDE\exception(218) : see declaration of 'stdext::exception' C:\Program Files (x86)\Microsoft Visual Studio 10.0\VC\INCLUDE\typeinfo(156) : see declaration of 'std::bad_cast' C:\Program Files (x86)\Microsoft Visual Studio 10.0\VC\INCLUDE\typeinfo(178) : warning C4275: non dll-interface class 'stdext::exception' used as base for dll-interface class 'std::bad_typeid' C:\Program Files (x86)\Microsoft Visual Studio 10.0\VC\INCLUDE\exception(218) : see declaration of 'stdext::exception' C:\Program Files (x86)\Microsoft Visual Studio 10.0\VC\INCLUDE\typeinfo(177) : see declaration of 'std::bad_typeid' C:\Program Files (x86)\Microsoft Visual Studio 10.0\VC\INCLUDE\typeinfo(157) : warning C4275: non dll-interface class 'stdext::exception' used as base for dll-interface class 'std::bad_cast' C:\Program Files (x86)\Microsoft Visual Studio 10.0\VC\INCLUDE\exception(218) : see declaration of 'stdext::exception' C:\Program Files (x86)\Microsoft Visual Studio 10.0\VC\INCLUDE\typeinfo(156) : see declaration of 'std::bad_cast' C:\Program Files (x86)\Microsoft Visual Studio 10.0\VC\INCLUDE\typeinfo(178) : warning C4275: non dll-interface class 'stdext::exception' used as base for dll-interface class 'std::bad_typeid' C:\Program Files (x86)\Microsoft Visual Studio 10.0\VC\INCLUDE\exception(218) : see declaration of 'stdext::exception' C:\Program Files (x86)\Microsoft Visual Studio 10.0\VC\INCLUDE\typeinfo(177) : see declaration of 'std::bad_typeid' C:\Program Files (x86)\Microsoft Visual Studio 10.0\VC\INCLUDE\typeinfo(157) : warning C4275: non dll-interface class 'stdext::exception' used as base for dll-interface class 'std::bad_cast' C:\Program Files (x86)\Microsoft Visual Studio 10.0\VC\INCLUDE\exception(218) : see declaration of 'stdext::exception' C:\Program Files (x86)\Microsoft Visual Studio 10.0\VC\INCLUDE\typeinfo(156) : see declaration of 'std::bad_cast' C:\Program Files (x86)\Microsoft Visual Studio 10.0\VC\INCLUDE\typeinfo(178) : warning C4275: non dll-interface class 'stdext::exception' used as base for dll-interface class 'std::bad_typeid' C:\Program Files (x86)\Microsoft Visual Studio 10.0\VC\INCLUDE\exception(218) : see declaration of 'stdext::exception' C:\Program Files (x86)\Microsoft Visual Studio 10.0\VC\INCLUDE\typeinfo(177) : see declaration of 'std::bad_typeid' Diagnostics.cpp C:\Program Files (x86)\Microsoft Visual Studio 10.0\VC\INCLUDE\typeinfo(157) : warning C4275: non dll-interface class 'stdext::exception' used as base for dll-interface class 'std::bad_cast' C:\Program Files (x86)\Microsoft Visual Studio 10.0\VC\INCLUDE\exception(218) : see declaration of 'stdext::exception' C:\Program Files (x86)\Microsoft Visual Studio 10.0\VC\INCLUDE\typeinfo(156) : see declaration of 'std::bad_cast' C:\Program Files (x86)\Microsoft Visual Studio 10.0\VC\INCLUDE\typeinfo(178) : warning C4275: non dll-interface class 'stdext::exception' used as base for dll-interface class 'std::bad_typeid' C:\Program Files (x86)\Microsoft Visual Studio 10.0\VC\INCLUDE\exception(218) : see declaration of 'stdext::exception' C:\Program Files (x86)\Microsoft Visual Studio 10.0\VC\INCLUDE\typeinfo(177) : see declaration of 'std::bad_typeid' DirectiveHandler.cpp C:\Program Files (x86)\Microsoft Visual Studio 10.0\VC\INCLUDE\typeinfo(157) : warning C4275: non dll-interface class 'stdext::exception' used as base for dll-interface class 'std::bad_cast' C:\Program Files (x86)\Microsoft Visual Studio 10.0\VC\INCLUDE\exception(218) : see declaration of 'stdext::exception' C:\Program Files (x86)\Microsoft Visual Studio 10.0\VC\INCLUDE\typeinfo(156) : see declaration of 'std::bad_cast' C:\Program Files (x86)\Microsoft Visual Studio 10.0\VC\INCLUDE\typeinfo(178) : warning C4275: non dll-interface class 'stdext::exception' used as base for dll-interface class 'std::bad_typeid' C:\Program Files (x86)\Microsoft Visual Studio 10.0\VC\INCLUDE\exception(218) : see declaration of 'stdext::exception' C:\Program Files (x86)\Microsoft Visual Studio 10.0\VC\INCLUDE\typeinfo(177) : see declaration of 'std::bad_typeid' ForLoopUnroll.cpp C:\Program Files (x86)\Microsoft Visual Studio 10.0\VC\INCLUDE\typeinfo(157) : warning C4275: non dll-interface class 'stdext::exception' used as base for dll-interface class 'std::bad_cast' C:\Program Files (x86)\Microsoft Visual Studio 10.0\VC\INCLUDE\exception(218) : see declaration of 'stdext::exception' C:\Program Files (x86)\Microsoft Visual Studio 10.0\VC\INCLUDE\typeinfo(156) : see declaration of 'std::bad_cast' C:\Program Files (x86)\Microsoft Visual Studio 10.0\VC\INCLUDE\typeinfo(178) : warning C4275: non dll-interface class 'stdext::exception' used as base for dll-interface class 'std::bad_typeid' C:\Program Files (x86)\Microsoft Visual Studio 10.0\VC\INCLUDE\exception(218) : see declaration of 'stdext::exception' C:\Program Files (x86)\Microsoft Visual Studio 10.0\VC\INCLUDE\typeinfo(177) : see declaration of 'std::bad_typeid' cl -c -nologo -Zm200 -Zc:wchar_t -Zi -MDd -Oy- -Gy -GS -Gm- -RTC1 -EHsc -GR -W4 -wd4100 -wd4127 -wd4189 -wd4239 -wd4244 -wd4245 -wd4512 -wd4702 -DUNICODE -DWIN32 -D_WINDOWS -D_UNICODE -D_CRT_SECURE_NO_DEPRECATE -D_HAS_EXCEPTIONS=0 -DNOMINMAX -DWIN32_LEAN_AND_MEAN=1 -D_WIN32_WINNT=0x0600 -DWINVER=0x0600 -DANGLE_DISABLE_TRACE -DANGLE_DISABLE_PERF -DANGLE_COMPILE_OPTIMIZATION_LEVEL=D3DCOMPILE_OPTIMIZATION_LEVEL0 -DANGLE_USE_NEW_PREPROCESSOR=1 -D_DEBUG -D_SECURE_SCL=0 -D_LIB -DCOMPILER_IMPLEMENTATION -I"D:\dev\qt\qt-rls\src\qtbase\src\angle\src\compiler" -I"D:\dev\qt\qt-rls\src\qtbase\src\angle\src" -I"D:\dev\qt\qt-rls\src\qtbase\src\angle\src\..\include" -I"D:\dev\qt\qt-rls\src\qtbase\src\3rdparty\angle\src" -I"D:\dev\qt\qt-rls\src\qtbase\src\3rdparty\angle\include" -I"." -I"..\..\..\..\mkspecs\win32-msvc2010" -Fo.obj\debug_shared\ @C:\Users\kkoehne\AppData\Local\Temp\MapLongVariableNames.obj.940.47.jom MapLongVariableNames.cpp ossource_win.cpp ...
This seems to indeed be an inconsistency in the MSVC STL headers: If _HAS_EXCEPTIONS is not defined, exception, bad_cast, bad_typeid are defined as:
class exception { // base of all library exceptions
class _CRTIMP2 bad_cast : public exception { // base of all bad cast exceptions
class _CRTIMP2 bad_typeid : public exception { // base of all bad typeid exceptions