我正在尝试在C中编写并运行“Hello World”。
int main(int argc, char *argv[])
{
#include <stdio.h>
puts("Hello world.");
return 0;
}
但是,我在终端中不断收到以下错误:
In file included from ex.c:3:
/usr/include/stdio.h:353:54: error: function definition is not allowed here
__header_always_inline int __sputc(int _c, FILE *_p) {
^
1 error generated.
在我看来,它在stdio头文件中发现语法错误?我不明白发生了什么。
答案 0 :(得分:1)
你想做这样的事情:
#include <stdio.h>
int main(void)
{
puts("Hello world.");
return 0;
}
您的#include
指令几乎总是在您的文件中首先出现。当您编写#include <some_file>
时,您告诉预处理器基本上将some_file中的所有文本复制到您的程序中。例如,<stdio.h>
包含puts
函数声明。通过在文件中包含<stdio.h>
作为第一件事,您可以告诉编译器puts
以便以后可以使用它。
编辑:感谢@Olaf指出#include是指令而非声明
答案 1 :(得分:0)
C标准的第7.1.2节标准标题部分地说:
如果 使用时,标题应包含在任何外部声明或定义之外,并且它 应首先包括在第一次提及任何功能或对象之前 声明,或声明它定义的任何类型或宏。
这意味着您不允许在函数体内包含任何标准头文件。
您的代码违反了该规则 - 无需工作。不要这样做!