传递 boost python enum 作为参数
我
enum_<mytype>("mytype")
.value("one",1)
.value("two",2)
;
在 BOOST_PYTHON_MODULE 中定义。
当我公开一个带有采用 mytype 类型(本质上是 int)参数的函数的类时,例如:
void myfunc(mytype m) {
...
}
我收到以下编译器警告:
取消引用指针 'p.2311' (或其他)确实违反了严格别名规则
现在,这只是一个警告,并且代码在启用优化的情况下完美运行。
我可以安全地忽略该警告吗?我错过了什么吗?
谢谢
I defined
enum_<mytype>("mytype")
.value("one",1)
.value("two",2)
;
in my BOOST_PYTHON_MODULE.
when I expose a class with a function taking a parameter of type mytype (essentially, an int), like:
void myfunc(mytype m) {
...
}
I get the following compiler warning:
dereferencing pointer 'p.2311' (or whatever) does break strict-aliasing rules
now, it is just a warning, and the code works perfectly with optimization enabled..
may I safely ignore the warning? am I missing something?
Thank you
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(1)
如果没有看到警告,很难准确地说,但这很可能是由 Python 中的一些宏引起的标题。为了安全起见,请使用
-fno-strict-aliasing
编译使用 Python(和 Boost.Python)的代码。It's hard to say exactly without seeing the warning, but it's most likely caused by some macros from Python headers. To be safe, compile the code that uses Python (and Boost.Python) with
-fno-strict-aliasing
.