Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/visual-studio/7.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C++ MSVC 14:std::type_信息在生成时不可用,无异常_C++_Visual Studio_Exception_Visual Studio 2015_Rtti - Fatal编程技术网

C++ MSVC 14:std::type_信息在生成时不可用,无异常

C++ MSVC 14:std::type_信息在生成时不可用,无异常,c++,visual-studio,exception,visual-studio-2015,rtti,C++,Visual Studio,Exception,Visual Studio 2015,Rtti,我使用的是MSVC 19.0.23506.0和building,没有例外: 定义_有_异常=0 已通过CMake删除异常处理: string(REGEX REPLACE”/EHsc““CMAKE\u CXX\u FLAGS”${CMAKE\u CXX\u FLAGS}”) 这意味着CXX标志如下所示: /DWIN32/D\u WINDOWS/GR/W4/MP 下面的示例足以重现我的错误: #include <typeinfo> int main(int, char**) {

我使用的是MSVC 19.0.23506.0和building,没有例外:

  • 定义_有_异常=0
  • 已通过CMake删除异常处理:

    string(REGEX REPLACE”/EHsc““CMAKE\u CXX\u FLAGS”${CMAKE\u CXX\u FLAGS}”)

    这意味着CXX标志如下所示:

    /DWIN32/D\u WINDOWS/GR/W4/MP

下面的示例足以重现我的错误:

#include <typeinfo>

int main(int, char**)
{
    std::type_info* ptr = nullptr;
    return 0;
}
尽管RTTI的使用是通过
/GR
标志启用的,但当异常被禁用时,MSVC为什么会禁用对类型ID的支持。
(似乎它替换了整个
vcruntime\u typeinfo.h
标题以删除类型信息定义)。

有趣的评论:“选项_HAS\u EXCEPTIONS=0未记录、未测试,Microsoft不支持它”。来源:当我省略了_HAS_EXCEPTIONS=0,但我使用了几个库来测试这个定义时,它就起作用了(例如,
googletest
cppformat
)。这是否意味着在MSVC中几乎不可能禁用异常使用?MS不太可能对此采取任何措施。另一个bug报告是否按设计关闭为
,并注明:
Macro\u HAS\u EXCEPTIONS=0未记录且Microsoft不支持。
main.cpp(6): error C2039: 'type_info': is not a member of 'std'