致命错误:未找到“stdio.h”文件

4

我为什么会收到这个消息?编译器是clang。以下是一个简单的程序,为了举例说明:

#include<stdio.h>

int fib(int);
int main()
{
    int i;
    scanf("%d",&i);
    printf("The fibonacci number that is %i'th in the sequence is %i \n", i, fib(i));
return 0;
}

int fib(int n)
{
    if (n==1 || n==0) return 1;
    else return fib(n-1)+fib(n-2);
}

4
编译器名称?错误消息的完整文本?用于编译代码的命令行? - user2100815
这段代码的源文件扩展名是什么?是 .c 还是 .cpp? - Lukasz
我的预测是,您并没有编译 C 代码,而是 C++ 代码。 - Simone
我不明白为什么它被标记为“precompiled-headers”。 - Hasturkun
2个回答

14

假设使用C语言

<stdio.h> 是C语言的标准头文件之一。编译器报错无法找到此头文件,这意味着您的标准库出了问题。

考虑重新安装您的编译器。

假设使用C++语言

<stdio.h>是C语言的标准头文件,而在C++中我们使用<cstdio>。尽管在C++中仍然需要存在<stdio.h>,所以这可能不是问题的原因。


除了这些假设之外,根据您的编码风格和标签,似乎最有可能的是您正在使用C语言。可以尝试使用以下示例代码,我保证在正常工作的C编译器上可以编译通过,如果编译失败,则说明您的编译器已经损坏,必须安装另一个或重新安装:

#include <stdio.h>
#include <stdlib.h>

int main(int argc, char **argv) {
    printf("Hello World!\n");
    return EXIT_SUCCESS;
}

2
这就是我一直想给出的答案,但害怕表态的原因。 - Gunther Piez
2
然而,stdio.h仍然是标准C++的一部分。 - user2100815
2
@nightcracker 它在当前的C++标准中是规范性的(即必需的),但可能会在以后的标准中被删除(实际上不会)。请参阅C++标准附录D。 - user2100815
@R. 除了在我的答案中使用 iostream 之外,还有什么其他问题吗(你特别提到了这一点)。请注意,我仍在学习C++,我的大部分观点都来自学习材料,除了非常基础的经验外,我没有自己的经验。 - orlp
1
在更新后的Slackware 14.2上,仅重新安装gcc是不足以编译此示例的。还需要进行一个额外的步骤:slackpkg install glibc* - jpka
显示剩余5条评论

0

我在使用Visual Studio 2017中的C++时遇到了类似于这样的运行时错误。在我的情况下,解决方案是简单地清理并重新构建解决方案。


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接