1

我在 org babel 中使用 C++,想知道如何格式化包含,以便我可以列出多个。

这是我正在尝试的(失败)

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

在这种情况下,两者printfcout都未在此范围内声明。我可以: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:

原来它实际上是org中的一个错误,所以它已经提交了。

4

1 回答 1

0

经过一些实验,在此过程中我注意到一些错误消息看起来相当 lispy,使用我对 Lisp 的肤浅知识,我找到了答案:

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

我遇到的另一个问题是,如果我将 C++ 大写,我只能让它执行,但如果我使用小写字母(“c++”),我只会得到语法高亮。纯粹的喜悦。

于 2015-09-10T11:53:51.737 回答