1

在以下示例中评估 fn-main 时,我希望将 some-fn 代码附加到 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

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

/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论点适用于整个块,这消除了一些块纠缠和执行的可能性。它应该可以工作,但目前给我一个错误,Wrong type argument: stringp, nil.

4

1 回答 1

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
于 2018-05-27T22:51:25.500 回答