1

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 は常に自由形式の言語だと思っていました :(.

前もって感謝します、

ニキル

4

1 に答える 1

2

Python から使用するコードを作成していても、C++ を作成しているので、C++ 構文の規則に縛られていることに注意してください。C++ では、Python とまったく同じように複数行の文字列リテラルを使用できません。特に、文字列内の裸の改行は許可されていないため、コンパイラが文字列の末尾を検出せずに行の末尾に到達すると、ご覧のとおり、正しくエラーが発生します。

C++ コードで複数行の文字列を取得するには、いくつかの手法のいずれかを使用できます。たとえば、 で改行を明示的に挿入したり、各行の最後で で\n改行をエスケープしたりできます。\これらのテクニックなどは、リンクされた質問への回答で示されています。

最初の方法の例を次に示します。\n各行の末尾にある に注意してください。C++ は、連続する引用符で囲まれた文字列リテラルを自動的に 1 つの値に結合します。これが、行間に演算子がない理由です。

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 に答える