为什么主要的P2((ac,av),int ac,char ** av)?

时间:2013-10-23 13:58:13

标签: c gcc operating-system

最近,我正在阅读GSM音频编码的源代码。这些代码写于1992年或之后。

有一些奇怪的代码,如:

main P2((ac, av), int ac, char ** av)

void Gsm_Coder P8((S,s,LARc,Nc,bc,Mc,xmaxc,xMc)

这些代码是否使用旧方法? P2或P8的用途是什么?

1 个答案:

答案 0 :(得分:1)

这些宏使代码与在括号后面列出类型的旧式编译器兼容。例如,P2可以扩展到

main(int ac, char **av)

main(ac,av)
int ac;
char **av;

运行gcc -E以查看预处理的输出。

28是因为旧版编译器中的预处理器宏不能有可变数量的参数,因此每个参数计数需要一个单独的宏。