c++ - boost::python 长/结构化文档字符串

标签 c++ boost-python

我有一个为 python 暴露而包装的 c++ 函数。为此,我使用 boost::python。同样,我希望有一个结构化的篡改,看起来非常像

    some text here.....

    Parameters:
    p1 ...
    p2 ...
    p3 ...

    Returns:
    R1 ...

现在,我的问题是,当我将上面的内容放在文档字符串占位符中时

     def("wrapFunName", cppFunc, "PLACEHOLDER") 

编译器 (clang) 向我抛出一个错误,即 missing terminating ' "' character。这是否意味着我不能用 booth::python 包装冗长的篡改,我必须连续编写它?我认为 c++/c 将永远是自由形式的语言 :(。

提前致谢

尼基尔

最佳答案

请记住,虽然您正在编写要从 Python 中使用的代码,但您仍在编写 C++,因此您受 C++ 语法规则的约束。 C++ 不允许以与 Python 完全相同的方式使用多行字符串文字。特别是,它不允许在字符串中使用裸换行符,因此当编译器到达行尾而没有找到字符串的结尾时,它会正确地提示,正如您所观察到的那样。

您可以使用 several techniques for getting multiline strings in your C++ code 中的任何一个.例如,您可以使用 \n 显式插入换行符,也可以在每行末尾使用 \ 转义换行符。这些技术以及更多技术在链接问题的答案中得到了展示。

这是第一种方法的示例。请注意每行末尾的 \n。 C++ 自动将连续引用的字符串文字连接成一个值,这就是行与行之间没有运算符的原因。

def("wrapFunName", cppFunc,
    "some text here.....\n"
    "\n"
    "Parameters:\n"
    "p1 ...\n"
    "p2 ...\n"
    "p3 ...\n"
    "\n"
    "Returns:\n"
    "R1 ...")

关于c++ - boost::python 长/结构化文档字符串,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/18340500/

相关文章:

python - 提升.Python : how to get super() methods called?

python - 无法构建 boost python 库( fatal error : pyconfig. h:没有这样的文件或目录)

python - 将 C++ boost::variant 暴露给 Python 时出错

c++ - 无法使用 boost.python 导入模块

c++ - 在 QtCreator 中调试使用 Boost.Python 构建的模块

c++ - 检查派生类型 (C++)

c++ - 量子计算机会影响 C++ 语言吗?

c++ - 我的代码在 Qt 中的 Debug模式下工作时不能在 Release模式下工作

c++ - __builtin_ctz(0)或__builtin_clz(0)有多不确定?

c++ - 如何使用 MFC 创建 VST 插件?