Как добавить один блок кода в качестве пролога к другому блоку кода для расширения блоков кода в стиле noweb при оценке с помощью Org-Babel? - PullRequest
0 голосов
/ 27 мая 2018

При оценке 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");
    }

The * 1010Аргумент * применяется ко всему блоку, и это исключает возможность запутывания и выполнения некоторых блоков.Это должно работать, но в настоящий момент выдает ошибку: Wrong type argument: stringp, nil.

1 Ответ

0 голосов
/ 28 мая 2018

Это похоже на работу:

#+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
...