将值发送到C语言中的声音驱动程序(const void)

将值发送到C语言中的声音驱动程序(const void),c,constants,void,C,Constants,Void,我试图从缓冲区中传输值,这些值是由正弦波函数生成的 当我尝试将值发送给驱动程序时,我必须使用此函数 snd_pcm_sframes_t snd_pcm_writei(snd_pcm_t *pcm, const void *buffer, snd_pcm_uframes_t size) 我的问题是我不理解const void*缓冲区 我设置了一个for循环来循环缓冲区中的值。然后,我将尝试将缓冲区中的每个值发送到声音驱动程序 frames

我试图从缓冲区中传输值,这些值是由正弦波函数生成的

当我尝试将值发送给驱动程序时,我必须使用此函数

snd_pcm_sframes_t snd_pcm_writei(snd_pcm_t *pcm, const void *buffer,
                             snd_pcm_uframes_t size)
我的问题是我不理解const void*缓冲区

我设置了一个for循环来循环缓冲区中的值。然后,我将尝试将缓冲区中的每个值发送到声音驱动程序

frames = snd_pcm_writei(handle, buffer[i], sizeof(buffer));
但它给出了一个与const void有关的错误-它只允许我发出“buffer”而不是“buffer[i]” 这对我没有用,因为它只是将整个缓冲区一次发送到声音驱动程序,从而产生噪音 我怎样才能避开这个???
感谢您的帮助

除非缓冲区是指针数组,否则缓冲区[i]不是指针。如果这是您真正想要的值,请使用(const void*)&buffer[i]-“一个void类型的常量指针,它是索引0处缓冲区中变量的地址”

换句话说,编译器消息告诉您类型不匹配

希望这有帮助:)祝你好运。

你应该使用&buffer[i]而不是buffer[i],然后传递正确大小的数据。缓冲区是如何定义的