我是新手,我试图将isomorphism.hpp文件用于有向图。
在尝试运行代码时,在boost库文件中我看到了错误
1> c:\ boost_1_55_0 \ boost \ graph \ isomorphism.hpp(142):错误C4703:可能未初始化的本地指针变量' v'使用
1> c:\ boost_1_55_0 \ boost \ graph \ isomorphism.hpp(147):错误C4703:可能未初始化的本地指针变量' v'使用
这是从这里抛出的,
BGL_FORALL_VERTICES_T(v, G1, Graph1){
f[v] = graph_traits<Graph2>::null_vertex(); //error thrown here
}
这在boost / graphs / iteration_macros.hpp中定义,如下所示:
#define BGL_FORALL_VERTICES_T(VNAME, GNAME, GraphType) \
for (std::pair<typename boost::graph_traits<GraphType>::vertex_iterator, \
typename boost::graph_traits<GraphType>::vertex_iterator> BGL_RANGE(__LINE__) = vertices(GNAME); \
BGL_FIRST(__LINE__) != BGL_LAST(__LINE__); BGL_FIRST(__LINE__) = BGL_LAST(__LINE__)) \
for (typename boost::graph_traits<GraphType>::vertex_descriptor VNAME; \
BGL_FIRST(__LINE__) != BGL_LAST(__LINE__) ? (VNAME = *BGL_FIRST(__LINE__), true):false; \
++BGL_FIRST(__LINE__))
我们需要在哪里定义?这是一个已知的问题吗?
答案 0 :(得分:0)
1&gt; c:\ boost_1_55_0 \ boost \ graph \ isomorphism.hpp(142):错误C4703:可能未初始化的本地指针变量&#39; v&#39;使用
...鉴于
BGL_FORALL_VERTICES_T(v, G1, Graph1)
...和...
#define BGL_FORALL_VERTICES_T(VNAME, GNAME, GraphType)
...我们知道v
在宏中称为VNAME。
外环上的条件是:
BGL_FIRST(__LINE__) != BGL_LAST(__LINE__)
内循环的条件是:
BGL_FIRST(__LINE__) != BGL_LAST(__LINE__) ? (VNAME = *BGL_FIRST(__LINE__), true):false;
鉴于内循环不会运行,除非满足外循环条件,我们可以简化:
true ? (VNAME = *BGL_FIRST(__LINE__), true):false;
(VNAME = *BGL_FIRST(__LINE__), true) ;
显然,VNAME总是被分配给并且从未使用过未初始化的。您的编译器分析存在缺陷,您应该禁用警告(如果可能的话,仅针对此特定代码),否则关闭任何treat-warnings-as-errors编译器选项,这样您的构建就不会中断完全或尝试其他编译器。
答案 1 :(得分:0)
转到
return '\n'.join(v.get('value') for v in filtered_dict.values())
在那里,您应该将“ SDL检查”从Project > "ProjectName" Properties > C/C++ > General
切换到Yes
。
答案 2 :(得分:0)
已启用C ++ 20并且警告级别4的Visual Studio 2019(平台工具集v142)提供了很多警告。使其静音:
#pragma warning(push)
#pragma warning(disable: 4244) // '-=': conversion from '__int64' to 'int', possible loss of data
#pragma warning(disable: 4267) // '=' : conversion from 'size_t' to 'int', possible loss of data
#pragma warning(disable: 4456) // declaration of 'xxx' hides previous local declaration
#pragma warning(disable: 4701) // potentially uninitialized local variable 'xxx' used
#pragma warning(disable: 4703) // potentially uninitialized local pointer variable 'xxx' used
#include <boost/graph/isomorphism.hpp>
#pragma warning(pop)