c - alsa-lib - 找不到结构定义。低级设计模式?

标签 c linux alsa

第 63 行 this example header file有一个类型定义:

typedef struct _snd_ctl_elem_info snd_ctl_elem_info_t;

代码中有多个这样的 typedef 示例。 我的目标是获得结构 _snd_ctl_elem_info 的实际定义,但我已经 grepped 源代码并用谷歌搜索但没有发现实际定义的痕迹。由于这次搜索失败,我开始认为我可能遗漏了一些概念,这可能与内核和向后兼容性有关?

我这样做的动机是能够通过 gdb 单步执行 alsa 并对结构有一个概览。

这是某种形式的低级结构定义模式吗?

最佳答案

alsa-lib 也使用这个结构来与内核通信,所以它只是重用了内核的定义。

内核头文件将安装为 /usr/include/sound/asound.h , 但为了避免依赖正确安装的内核头文件,alsa-lib 在 alsa-lib/include/sound/asound.h 中有自己的此文件副本。 .

应用程序不应直接访问此结构的成员,因此 alsa-lib 包含 asound.h从它的官方头文件(甚至不安装它;它只在编译 alsa-lib 时使用)。

要获得实际定义,您需要 #include <sound/asound.h> .

关于c - alsa-lib - 找不到结构定义。低级设计模式?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/31533023/

相关文章:

Linux内核的Linux参数sysctl列表及其解释

c - 在 Windows 中冒泡排序 'works',但在 GNU/Linux 上不使用 GCC

c - 捕获未初始化的指针

c - 在 C99 的结构中分配指向二维空数组的指针

linux - 通过终端获取网站IP地址

在 VirtualBox 上的 linux fedora 13 或 14 中编译 alsa + c + armv5tel

c - ALSA中period的含义

c - Ubuntu 信号量 : Segmentation fault (core dumped)

c - C 中的结构体和函数

c - 在 C 中使用不同音量的 ALSA 播放多个 wav 文件