1

私は org babel で C++ を使用しており、複数をリストできるようにインクルードをフォーマットする方法を知りたいです。

これが私が試していることです(失敗します)

#+BEGIN_SRC C++ :includes <cstdio> :includes <iostream> :includes <string>
using namespace std;
printf("Hello ");
cout << "world\n";
#+END_SRC

この場合、printfとの両方coutがこのスコープで宣言されていません。:includes <string>ヘッダーから不要なものを削除でき、エラーが発生しないため、最後のカウントcoutのみのように見えます。:includes複数のインクルードを区切り文字として何も使用せず、コンマとスペースを使用して同じ行にロードしようとしましたが、インクルード ディレクティブの末尾にある余分なトークンに関するエラーが常に発生します。ヘッダー行で機能する場合にも使用:includes+してみましたが、機能しませんでした。

ドキュメントに次のように記載されているため、私がやろうとしていることは可能であると確信しています

:includes
(C & CC+ only) accepts either a single string name, or a list of names of files to #include in the execution of the code block

組織バージョン: 8.2.7-4-g880362-elpa

編集:

他のヘッダー引数は一緒に並べることができる (つまり:results raw drawer、引き出しにフォーマットされていない結果が生成される) ため、これがバグである可能性が十分にあることに注意してください。を使用:include <cstdio> <iostream>すると、行末に余分なトークンがあるというコンパイラ エラーが発生します#include <cstdio>

編集2:

実際には組織のバグであることが判明したため、提出されました。

4

1 に答える 1

0

いくつかの実験の後、いくつかのエラーメッセージがかなりぎこちないように見えることに気付き、私が持っているLispの表面的な知識を使用して、答えを見つけました:

#+begin_src C++ :includes '("<math.h>" "<iostream>" "<algorithm>")
// Freely use symbols from those headers
#+end_src

私が抱えているもう1つの問題は、C++を大文字にした場合にのみ実行できるが、マイナス記号(「c++」)を使用した場合にのみ構文の強調表示が得られることです。純粋な喜び。

于 2015-09-10T11:53:51.737 に答える