Запустите завершенную программу C от org babel - PullRequest
2 голосов
/ 14 января 2020

Я попытался запустить образец из C -Primer-Plus

Listing 2.1 The first.c Program
#+BEGIN_SRC C :results output
#include <stdio.h>
int main(void)                /* a simple program             */
{
    int num;                  /* define a variable called num */
    num = 1;                  /* assign a value to num        */

    printf("I am a simple "); /* use the printf() function    */
    printf("computer.n");
    printf("My favorite number is %d because it is first.n",num);

    return 0;
}
#+END_SRC

Он сообщает о таинственных ошибках как

/tmp/babel-xEtnj6/C-src-mefAEj.c:9:15: error: stray ‘\302’ in program
    9 | int main(void)                /* a simple program             */
      |               ^
/tmp/babel-xEtnj6/C-src-mefAEj.c:9:16: error: stray ‘\240’ in program
    9 | int main(void)                /* a simple program             */
      |                ^
/tmp/babel-xEtnj6/C-src-mefAEj.c:9:17: error: stray ‘\302’ in program
    9 | int main(void)                /* a simple program             */

Если main() был удален, он работает

#+BEGIN_SRC C
printf("Literature Programming");
#+END_SRC

#+RESULTS:
: Literature Programming

К сожалению, большинство C кодов, инкапсулированных в 'main`

Как можно заставить работать первый пример?

1 Ответ

3 голосов
/ 15 января 2020

Вы можете попробовать добавить :main no к вашему блоку кода

#+BEGIN_SRC C :results output :main no
#include <stdio.h>

int main(void)                /* a simple program             */
{
    int num;                  /* define a variable called num */
    num = 1;                  /* assign a value to num        */

    printf("I am a simple "); /* use the printf() function    */
    printf("computer.n");
    printf("My favorite number is %d because it is first.n",num);

    return 0;
}
#+END_SRC

Также обратите внимание, что есть и другие полезные модификаторы, такие как :flags, :lib, :cmdline ... См. Аргументы заголовка для C, C ++, D блоков исходного кода для получения дополнительной информации.

...