传递Boost Python枚举作为参数

1 投票
1 回答
925 浏览
提问于 2025-04-17 03:21

我在我的 BOOST_PYTHON_MODULE 中定义了

enum_<mytype>("mytype")
    .value("one",1)
    .value("two",2)
;

当我暴露一个包含参数类型为 mytype(其实就是一个整数)的函数的类时,比如:

void myfunc(mytype m) {
    ...
}

我收到了以下编译器警告:

解引用指针 'p.2311'(或者其他的)违反了严格别名规则

现在,这只是一个警告,而且在开启优化后,代码运行得非常好。

我可以安全地忽略这个警告吗?我是不是漏掉了什么?

谢谢

1 个回答

1

具体情况很难说,因为没有看到警告信息,但很可能是因为一些来自Python头文件的宏引起的。为了安全起见,编译使用Python(和Boost.Python)的代码时,可以加上-fno-strict-aliasing这个选项。

撰写回答