最近,我正在阅读GSM音频编码的源代码。这些代码写于1992年或之后。
有一些奇怪的代码,如:
main P2((ac, av), int ac, char ** av)
void Gsm_Coder P8((S,s,LARc,Nc,bc,Mc,xmaxc,xMc)
这些代码是否使用旧方法? P2或P8的用途是什么?
答案 0 :(得分:1)
这些宏使代码与在括号后面列出类型的旧式编译器兼容。例如,P2
可以扩展到
main(int ac, char **av)
或
main(ac,av)
int ac;
char **av;
运行gcc -E
以查看预处理的输出。
2
和8
是因为旧版编译器中的预处理器宏不能有可变数量的参数,因此每个参数计数需要一个单独的宏。