error: called object ‘fopen’ is not a function or function pointer
error: called object ‘fopen’ is not a function or function pointer
我现在遇到了非常奇怪的错误,
在我的#include 部分,我有 #include <stdio.h>
根据 fopen 的手册页,它是必需的
"SYNOPSIS
#include <stdio.h>"
我也在同一代码中使用 stdio.h 中的 fdopen,它正在运行
fp = fdopen(fdes, "r+");
错误指向以下代码
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 header 中的代码,它就可以正常工作。
我 运行 在我的系统上定位
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 不起作用?
我觉得你想写的是FILE *fout;
而不是FILE *fopen;
正如您的编译器试图告诉您的那样,您将 fopen
声明为 FILE*
类型的变量:
getFileCli.c:22:8: note: declared here
FILE *fopen;
并且由于您的变量既不是函数也不是函数指针,因此您不能调用它:
getFileCli.c:94:12: error: called object ‘fopen’ is not a function or function pointer
fout = fopen(fname, "wb");
^
要修复它,删除第 22 行中的声明 FILE *fopen;
或重命名变量。
我现在遇到了非常奇怪的错误,
在我的#include 部分,我有 #include <stdio.h>
根据 fopen 的手册页,它是必需的
"SYNOPSIS
#include <stdio.h>"
我也在同一代码中使用 stdio.h 中的 fdopen,它正在运行
fp = fdopen(fdes, "r+");
错误指向以下代码
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 header 中的代码,它就可以正常工作。
我 运行 在我的系统上定位
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 不起作用?
我觉得你想写的是FILE *fout;
而不是FILE *fopen;
正如您的编译器试图告诉您的那样,您将 fopen
声明为 FILE*
类型的变量:
getFileCli.c:22:8: note: declared here
FILE *fopen;
并且由于您的变量既不是函数也不是函数指针,因此您不能调用它:
getFileCli.c:94:12: error: called object ‘fopen’ is not a function or function pointer
fout = fopen(fname, "wb");
^
要修复它,删除第 22 行中的声明 FILE *fopen;
或重命名变量。