Uploaded image for project: 'Qt'
  1. Qt
  2. QTBUG-32833

MSVC warning C4275 when compiling ANGLE

    XMLWordPrintable

Details

    • Bug
    • Resolution: Out of scope
    • P3: Somewhat important
    • None
    • 5.1.1
    • GUI: Painting
    • 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
      

      Attachments

        No reviews matched the request. Check your Options in the drop-down menu of this sections header.

        Activity

          People

            kkohne Kai Köhne
            kkohne Kai Köhne
            Votes:
            0 Vote for this issue
            Watchers:
            3 Start watching this issue

            Dates

              Created:
              Updated:
              Resolved:

              Gerrit Reviews

                There are no open Gerrit changes