如何将一个代码块添加为另一个代码块的序言,以便在使用Org-Babel进行评估时对代码块进行现代样式扩展?

时间:2018-05-27 19:15:01

标签: emacs org-mode org-babel

在下面的例子中评估fn-main时,我希望在fn-main块的开头附加some-fn代码,以便在评估之前进行扩展。

    tab2.addMouseListener(new MouseListener() {
        public void mouseClicked(MouseEvent e) {
            if(e.getClickCount()==2) {
                new EditData(params);
                tab2.setValueAt(newData, location, location);
            } 
        }
    });

目前,对fn-main的评估会导致以下错误:

#+NAME: some-fn #+BEGIN_SRC C void printother() { printf("WOrld"); } #+END_SRC #+NAME: fn-main #+BEGIN_SRC C :noweb yes :main no :prologue "<<some-fn>>" int main() { printother(); printf("Hello"); } #+END_SRC 执行前最终所需的扩展块:


/tmp/ccAuvLn1.o: In function `main':
C-src-5927aNL.c:(.text+0xa): undefined reference to `printother'
collect2: error: ld returned 1 exit status
/bin/bash: /tmp/babel-5927f7v/C-bin-5927nXR: No such file or directory

void printother() { printf("WOrld"); } int main() { printother(); printf("Hello"); } 参数适用于整个块,这消除了一些块被纠缠和执行的可能性。它应该可以正常工作,但目前给我一个错误,:noweb eval

1 个答案:

答案 0 :(得分:0)

这似乎有效:

#+NAME: some-fn
#+BEGIN_SRC C
    void printother() {
        printf("WOrld");
    }
#+END_SRC

#+NAME: fn-main
#+BEGIN_SRC C :noweb yes
    <<some-fn>>
    int main() {
        printother();
        printf("Hello");
    }
#+END_SRC

#+RESULTS: fn-main
: WOrldHello
相关问题