声明一个文件指针数组,报错illegal use
- 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; }结果报错
错误8error C2275: 'FILE' : illegal use of this type as an expression
错误9error C2065: 'fpOutput' : undeclared identifier
错误10error 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; }}