传递 boost python enum 作为参数

发布于 2024-12-07 08:16:00 字数 410 浏览 0 评论 0原文

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 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(1

雄赳赳气昂昂 2024-12-14 08:16:00

如果没有看到警告,很难准确地说,但这很可能是由 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.

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文