C++ MSVC 14:std::type_信息在生成时不可用,无异常
我使用的是MSVC 19.0.23506.0和building,没有例外: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**) {
- 定义_有_异常=0
- 已通过CMake删除异常处理:
这意味着CXX标志如下所示:string(REGEX REPLACE”/EHsc““CMAKE\u CXX\u FLAGS”${CMAKE\u CXX\u FLAGS}”)
/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'