C++扩展中的Python前哨

2024-10-02 18:21:02 发布

您现在位置:Python中文网/ 问答频道 /正文

我正在研究一个用C++编写的Python扩展模块。

根据Pythondocumentation的说法,模块方法表应该写如下:

static PyMethodDef SpamMethods[] = {
    ...
    {"system",  spam_system, METH_VARARGS,
    "Execute a shell command."},
    ...
    {NULL, NULL, 0, NULL}        /* Sentinel */
};

但是我看到一些开发人员写的哨兵如下:

^{pr2}$

我的问题是,以下是使用缩短版本是否存在风险?


Tags: 模块方法executestaticspamshellsystemnull
1条回答
网友
1楼 · 发布于 2024-10-02 18:21:02

{}初始化的pod类的字段未显式设置为零。在

如果PyMethodDef是pod(普通的旧数据),我怀疑,{NULL, NULL, 0, NULL}将生成与{}相同的数据。在

<>这在C和C++中都是正确的。在

如果类^ {CD2>}是C++ 11中的非POD类,^ {< CD3>}可以做不同于^ {}的事,但我强烈怀疑这里是这样的。在

{I{I>在同一时间内,{I}不改变cd2}的数据。我觉得那不太可能。在

相关问题 更多 >