c - GPU_FFT : in unmpamem: control reaches end of non-void function

标签 c raspberry-pi fft gpu

与 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/

相关文章:

c - FFTW 1 个线程总是优于多个线程

c - 在 Visual Studio 和 Eclipse 中包含 Kiss FFT 库

c - 查找最大和最小值及其数组索引的程序(C 编程)

c - 如何在两个线程之间共享和访问链表

java - 使用溢出和循环查找 C 中的最大值

ssl - Windows 10 IoT Web 服务器上的 HTTPS

matlab - 正确使用fft2和fftshift用于着色的形状

C/C++ printf() 在 scanf() 问题之前

linux - 从 Raspberry Pi 控制 IKEA Tradfri 灯

c# - 在 Raspberry PI 上管理 Wifi 连接