与 gpu_fft 库一起编译的代码会抛出以下错误:
错误:
mailbox.c: In function 'unmapmem':
mailbox.c:77:1: warning: control reaches end of non-void function [-Wreturn-type]
使用代码:
#include <stdlib.h>
#include <unistd.h>
#include <stdio.h>
#include <math.h>
#include <time.h>
#include "mailbox.h"
#include "gpu_fft.h"
int main(){
struct GPU_FFT *fft;
int m, l, d, j, k, i;
m = mbox_open();
l = 8; //length
d = GPU_FFT_FWD; //direction
j = 500; //jobs
k = 255; //loops
float data[k];
for (i=0; i<k; i++){
data[i] = i*0.00247;
printf("data[%d] = %f\n", i, data[i]);
}
float *dat;
gpu_fft_prepare(m, l, d, j, &fft);
dat = &data[8];
for(i=0; i<k; i++){
fft = (struct GPU_FFT *) &dat;
gpu_fft_execute(fft);
printf("data[%d] = %f, out = %d\n", i, data[i], fft);
}
gpu_fft_release(fft);
return 0;
}
首先,我知道其中包含一些我在这里不使用的库,它们供将来使用。任何想法将不胜感激!
最佳答案
mailbox.c 文件未正确写入。查看 unmapmem() 的函数原型(prototype)。它有一个 void* 返回类型,但从不返回任何东西!看起来开发人员从以前的函数中复制/粘贴了函数原型(prototype),但忘记删除星号。这就是编译器针对该文件中的第 77 行向您发出警告的原因。
编辑添加:看来开发人员从来不想从 unmapmem() 返回任何内容。您应该只需将返回类型更改为 void(即删除星号)即可。
此外,请务必就该错误联系mailbox.c 文件的开发者。
关于c - GPU_FFT : in unmpamem: control reaches end of non-void function,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/24267775/