为什么这个OrgBabelC代码段不产生输出?

为什么这个OrgBabelC代码段不产生输出?,c,emacs,literate-programming,org-babel,C,Emacs,Literate Programming,Org Babel,基本上,printf如果我把它放在main()中,就不会产生输出 这项工作: #+begin_src C printf("Hello World!\n"); #+end_src 但是这个 #+begin_src C void main() { printf("Hello World!\n"); } #+end_src 导致 代码块没有输出 我已尝试将:结果输出添加到begin\u src行。我尝试过包括stdio.h。当我查看*Messages*时,我发现当我在main中包装printf时,

基本上,
printf
如果我把它放在
main()
中,就不会产生输出

这项工作:

#+begin_src C
printf("Hello World!\n");
#+end_src
但是这个

#+begin_src C
void main() {
printf("Hello World!\n");
}
#+end_src
导致

代码块没有输出

我已尝试将
:结果输出
添加到
begin\u src
行。我尝试过包括
stdio.h
。当我查看
*Messages*
时,我发现当我在
main
中包装
printf
时,我得到了错误

**读取结果时出错:(缓冲区开始)**

这里怎么了?

试试这个:

#+名称:main
#+开始
int main(int argc,char*argv[]){
printf(“你好,世界!\n”);
返回0;
}
#+结束(src)

,即使没有参数输入main或
#+name:main
(我必须在
返回0
后加一个分号)。显然,它只需要是一个带返回的int?它始终取决于使用的ANSI C标准。如果是C89/90,您可以不使用int编写,如果不需要int。是的,你应该在返回0后加上分号。这是我的错误,thx.Nope。当我玩得更远时,我使用什么标准并不重要。添加
:flags-std=c99
允许我使用c99功能,但不允许我从void函数获取输出。void main(){…}不是ANSI C标准,某些C编译器允许它,但它是错误的。在ANSI C C89/C90中,您可以只编写main(){…},因为暗示了int。