【发布时间】:2014-04-29 08:09:39
【问题描述】:
我有一些 ALSA 驱动程序代码,其中有很多行必须更改才能在两种音频配置之间进行切换:L/R 立体声和单声道,但我想要一个开关来在 L/R 模式或单声道模式之间进行选择。我目前有两个文件,一个用于 L/R,一个用于单声道,但缺点是两个文件都必须使用相同的更新进行维护。将所有内容都放在一个文件中会很好,因为两者之间有很多相似之处。
例如:
左/右立体声:
regmap_read(WM88->regmapL, addr, &val_l);
regmap_read(WM88->regmapR, addr, &val_r);
pr_info("%s: reg 0x%02X, val_l 0x%02X, val_r 0x%02X\n",
__func__, addr, val_l, val_r);
单声道:
regmap_read(WM88->regmapL, addr, &val_l);
pr_info("%s: reg 0x%02X, val_l 0x%02X\n",
__func__, addr, val_l);
一个选项是有一堆#ifdef #endif 块,但它看起来很丑陋。有一个更好的方法吗?它不一定是宏,但我认为这可能是最好的方法。
【问题讨论】:
标签: c macros kernel driver alsa