C- stdio.h文件中的错误



我正在尝试在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标头文件中拾取了语法错误吗?我不明白发生了什么。

您想做这样的事情:

#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是指令,而不是语句

第7.1.2节标准标题 c Standard的标准说,部分:

如果 使用的,应将标题包括在任何外部声明或定义之外,并且 首先在第一个引用任何功能或对象之前首先包含 声明其定义的任何类型或宏。

这意味着您不允许在功能主体内部包含任何标准标头。

您的代码违反了该规则 - 不需要工作。不要做!

相关内容

最新更新