Mar*_*ara 16 c++ python swig stl
我正在尝试使用SWIG将此函数公开给Python:
std::vector<int> get_match_stats();
Run Code Online (Sandbox Code Playgroud)
我希望SWIG为Python生成包装代码,以便将其视为整数列表.
将其添加到.i文件中:
%include "typemaps.i"
%include "std_vector.i"
namespace std
{
%template(IntVector) vector<int>;
}
我正在跑步SWIG Version 1.3.36并打电话给-Wall我,我没有得到任何警告.
我能够访问列表但是在使用-Wall(g++ (GCC) 4.2.4生成)生成的C++代码进行编译时会收到一些警告:
warning: dereferencing type-punned pointer will break strict-aliasing rules
我正确地公开了这个功能吗?如果是这样,警告意味着什么?
这些是相同功能中违规行之前的行:
SWIGINTERN PyObject *_wrap_IntVector_erase__SWIG_0(PyObject *SWIGUNUSEDPARM(self), PyObject *args) {
PyObject *resultobj = 0;
std::vector *arg1 = (std::vector *) 0 ;
std::vector::iterator arg2 ;
std::vector::iterator result;
void *argp1 = 0 ;
int res1 = 0 ;
swig::PySwigIterator *iter2 = 0 ;
int res2 ;
PyObject * obj0 = 0 ;
PyObject * obj1 = 0 ;
if (!PyArg_ParseTuple(args,(char *)"OO:IntVector_erase",&obj0,&obj1)) SWIG_fail;
res1 = SWIG_ConvertPtr(obj0, &argp1,SWIGTYPE_p_std__vectorT_int_std__allocatorT_int_t_t, 0 | 0 );
if (!SWIG_IsOK(res1)) {
SWIG_exception_fail(SWIG_ArgError(res1), "in method '" "IntVector_erase" "', argument " "1"" of type '" "std::vector *""'");
}
arg1 = reinterpret_cast * >(argp1);
这是违规行:
res2 = SWIG_ConvertPtr(obj1, SWIG_as_voidptrptr(&iter2), swig::PySwigIterator::descriptor(), 0);
更多代码如下.
使用g ++ 4.2.4进行编译时生成的警告是:
swig_iss_wrap.cxx: In function ‘PyObject* _wrap_IntVector_erase__SWIG_0(PyObject*, PyObject*)’: swig_iss_wrap.cxx:5885: warning: dereferencing type-punned pointer will break strict-aliasing rules
| 归档时间: |
|
| 查看次数: |
15498 次 |
| 最近记录: |