2013-08-20 35 views
1

我有一個用於python暴露的C++函數。我使用boost :: python來達到這個目的。出於同樣的,我希望有一個結構化的刮除,這看起來非常像boost :: python long/structured docstrings

some text here..... 

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

    Returns: 
    R1 ... 

現在,我的問題是,當我把上面的文檔字符串佔位符

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

編譯器(鐺)拋出我錯誤missing terminating ' " ' character。這是否意味着我不能用booth :: python來包裝長時間的醫生,而且我必須連續寫下它?我認爲C++/C將永遠是免費的形式語言:(。提前

感謝,

尼基爾

回答

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 ...") 
+0

多行字符串文字是我錯過的東西:(謝謝! –