字符数组的错误初始化字符串太长[-fpermissive]

时间:2014-12-23 17:44:52

标签: struct

在Dev-C ++中编译时,我的代码出现此错误。

错误是:[错误]字符数组的初始化字符串太长[-fpermissive]

部分代码是:

struct ffthdr {
char fftc[4];     // .fft
long fftsize;     // fft size
long windowsize;  // windowsize (<= fftsize)
long hopsize;     // hop size (<=fftsize) 
long dlength;     // original file data length in samples
long srate;       // original file sample rate 
long winType;       // window type 
};

void rfft(float *x, long N, int forward);
void cfft(float *x, long NC, int forward);
void bitreverse(float *x, long N);
int makewindow(int aType, float *win, long length);
int dowindow(float *fdata, float *window, long length);

int main(int argc, char *argv[])   {
float *result,*tempres=0,*window=0;
short *data;
float max,norm=1.0;
long i,time,fsize=1024,wsize=512,hsize=256,nread;
int wavein;
long length,srate,winType=1;
FILE *input, *output;
struct soundhdr hdr;
struct ffthdr fhdr =  {".fft",1024,512,256,0,0,1};

错误出现在最后一行。

感谢。

1 个答案:

答案 0 :(得分:1)

这是因为你的字符数组的初始化字符串太长了

".fft"

长度为5个字符(包括NUL)

你只分配了4:

char fftc[4];     // .fft

如果您真的想要这四个字符而不是NUL,请尝试

struct ffthdr fhdr =  {{'.','f','f','t'},1024,512,256,0,0,1};