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