在以下示例中计算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
.
这似乎有效:
#+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