Как сделать так, чтобы в org babel было включено более одного?

Я работаю с C++ в org babel и хотел бы узнать, как отформатировать включения, чтобы я мог перечислить более одного.

Вот что я пытаюсь (что не получается)

#+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 на счет. Я попытался загрузить несколько включений в одну строку, не используя ничего, запятые и пробелы в качестве разделителей, и я всегда получаю сообщение об ошибке, касающееся дополнительных токенов, в конце директивы include. Я также пытался использовать :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

Org-версия: 8.2.7-4-g880362-elpa

РЕДАКТИРОВАТЬ:

Стоит отметить, что другие аргументы заголовка могут быть просто связаны вместе (т.е. :results raw drawer будет выдавать неформатированные результаты в ящике), так что есть большая вероятность, что это ошибка. С помощью :include <cstdio> <iostream> выдает ошибку компилятора, что в конце #include <cstdio> линия.

РЕДАКТИРОВАТЬ 2:

Оказывается, это на самом деле ошибка в org, поэтому она была отправлена.

1 ответ

После некоторых экспериментов, в ходе которых я заметил, что некоторые сообщения об ошибках выглядят довольно странно, и, используя поверхностные знания о Лиспе, я нашел ответ:

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

Другая проблема, с которой я сталкиваюсь, заключается в том, что я могу заставить его работать только при использовании заглавной буквы C++, но я получаю подсветку синтаксиса, только если использую minuscules ("C++"). Чистая радость.

Другие вопросы по тегам