1

我有一个用于 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 将永远是自由形式的语言:(。

提前致谢,

尼基尔

4

1 回答 1

2

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

您可以使用多种技术中的任何一种来获取 C++ 代码中的多行字符串。例如,您可以使用 显式插入换行符,也可以在每行末尾\n使用 转义换行符。\这些技术以及更多技术在链接问题的答案中得到了展示。

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

def("wrapFunName", cppFunc,
    "some text here.....\n"
    "\n"
    "Parameters:\n"
    "p1 ...\n"
    "p2 ...\n"
    "p3 ...\n"
    "\n"
    "Returns:\n"
    "R1 ...")
于 2013-08-20T16:57:17.697 回答