声明一个文件指针数组,报错illegal use,该如何解决
声明一个文件指针数组,报错illegal use
结果报错
错误 8 error C2275: 'FILE' : illegal use of this type as an expression
错误 9 error C2065: 'fpOutput' : undeclared identifier
错误 10 error C2100: illegal indirection
在MFC中使用没问题,但新建别的工程就报错
用new用malloc都一样
------解决方案--------------------
.c文件中需要将变量声明放在函数开头,如
- C/C++ code
//打开k+m个要写入的文件 //(FILE *)fpOutput[]=(FILE**)malloc(sizeof(FILE*)*(k+m)); FILE **fpOutput; fpOutput=(FILE**)malloc(sizeof(FILE*)*(k+m)); char strOutputPath[MAX_PATH]; for (size_t i=0;i<(k+m);i++) { sprintf(strOutputPath,".//out//%d",i+1);//合成文件路径 fpOutput[i]=fopen(strOutputPath,"wb"); if (fpOutput[i]==NULL) return false; }
结果报错
错误 8 error C2275: 'FILE' : illegal use of this type as an expression
错误 9 error C2065: 'fpOutput' : undeclared identifier
错误 10 error C2100: illegal indirection
在MFC中使用没问题,但新建别的工程就报错
用new用malloc都一样
------解决方案--------------------
.c文件中需要将变量声明放在函数开头,如
- C/C++ code
#include <stdio.h> #include <stdlib.h> int main() { //C程序变量声明放函数开头 int k=1,m=1; FILE **fpOutput; char strOutputPath[MAX_PATH]; size_t i; fpOutput=(FILE**)malloc(sizeof(FILE*)*(k+m)); for (i=0;i<(k+m);i++) { sprintf(strOutputPath,".//out//%d",i+1);//合成文件路径 fpOutput[i]=fopen(strOutputPath,"wb"); if (fpOutput[i]==NULL) return false; } }