Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/c/68.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C 错误:调用对象‘;fopen&x2019;不是函数或函数指针_C_Header_Stdio - Fatal编程技术网

C 错误:调用对象‘;fopen&x2019;不是函数或函数指针

C 错误:调用对象‘;fopen&x2019;不是函数或函数指针,c,header,stdio,C,Header,Stdio,我现在犯了一个很奇怪的错误 在我的#include部分中,我有#include,根据fopen手册页,这是必需的 "SYNOPSIS #include <stdio.h>" 错误指向以下代码 fout = fopen(fname, "wb"); 完全错误是 getFileCli.c:94:12: error: called object ‘fopen’ is not a function or function pointer fout = fopen(f

我现在犯了一个很奇怪的错误

在我的#include部分中,我有
#include
,根据fopen手册页,这是必需的

"SYNOPSIS
       #include <stdio.h>"
错误指向以下代码

fout = fopen(fname, "wb");
完全错误是

getFileCli.c:94:12: error: called object ‘fopen’ is not a function or function pointer
     fout = fopen(fname, "wb");
            ^
getFileCli.c:22:8: note: declared here
  FILE *fopen;
现在,如果我使用
FILE*fopen(const char*path,const char*mode)的fopen头中的代码在主要部分,它工作得非常好

我在我的系统上运行了定位

locate stdio.h
/usr/include/stdio.h
/usr/include/c++/4.9/tr1/stdio.h
/usr/include/x86_64-linux-gnu/bits/stdio.h
/usr/lib/x86_64-linux-gnu/perl/5.20.2/CORE/nostdio.h

所以我知道了,include不起作用的原因吗?

我想你想写什么
文件*fout而不是
文件*fopen

我想你想写什么
文件*fout而不是
文件*fopen

正如编译器试图告诉您的那样,您声明
fopen
FILE*
类型的变量:

getFileCli.c:22:8: note: declared here
  FILE *fopen;
因为变量既不是函数也不是函数指针,所以不能调用它:



要修复它,请删除声明
文件*fopen或重命名变量。

正如编译器试图告诉您的那样,您声明
fopen
FILE*
类型的变量:

getFileCli.c:22:8: note: declared here
  FILE *fopen;
因为变量既不是函数也不是函数指针,所以不能调用它:



要修复它,请删除声明
文件*fopen或重命名变量。

您声明了类型为
FILE*
的变量
fopen
。为什么?将您的代码减少到
#include
intmain(void){FILE*fp=fopen(“固定名称”,“wb”);return(fp!=0)}
或其左右。你还知道错误吗?如果没有,请添加代码,直到您这样做;或者从你的代码开始,消除代码块,直到你有一个能重现你的问题的最小版本。您将创建一个MCVE()。但是编译器会告诉您这个问题,因为。不要试图在源文件中声明标准函数。标准函数只能在标准头中声明,您应该使用它们。在您自己的代码中,在当前源文件之外定义的函数应该有一个声明它们的头,并且该头应该在使用函数的文件和定义函数的文件中使用(一致性检查)。定义为仅在当前文件中使用的函数应该是
静态的
,并在使用之前声明或定义。@tkausl,就是这样,我删除了文件*fopen;您声明了类型为
FILE*
的变量
fopen
。为什么?将您的代码减少到
#include
intmain(void){FILE*fp=fopen(“固定名称”,“wb”);return(fp!=0)}
或其左右。你还知道错误吗?如果没有,请添加代码,直到您这样做;或者从你的代码开始,消除代码块,直到你有一个能重现你的问题的最小版本。您将创建一个MCVE()。但是编译器会告诉您这个问题,因为。不要试图在源文件中声明标准函数。标准函数只能在标准头中声明,您应该使用它们。在您自己的代码中,在当前源文件之外定义的函数应该有一个声明它们的头,并且该头应该在使用函数的文件和定义函数的文件中使用(一致性检查)。定义为仅在当前文件中使用的函数应该是
静态的
,并在使用之前声明或定义。@tkausl,就是这样,我删除了文件*fopen;
getFileCli.c:94:12: error: called object ‘fopen’ is not a function or function pointer
     fout = fopen(fname, "wb");
            ^