我有一个用于python曝光的c ++函数。为此,我使用boost :: python。同样,我希望有一个结构化的医生,看起来非常像
some text here.....
Parameters:
p1 ...
p2 ...
p3 ...
Returns:
R1 ...
现在,我的问题是,当我将上述内容放在docstring占位符
中时 def("wrapFunName", cppFunc, "PLACEHOLDER")
编译器(clang)抛出了missing terminating ' " ' character
的错误。这是否意味着我不能用booth :: python包装长期的医生,我必须连续写它?我认为c ++ / c永远是自由形式的语言:(。
提前致谢,
尼基尔
答案 0 :(得分:2)
请记住,虽然您正在编写要从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 ...")