2

最近在看GSM音频编码的源码。这些代码是在 1992 年或之后编写的。

有一些奇怪的代码,例如:

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

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

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

4

1 回答 1

1

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

main(int ac, char **av)

或者

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

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

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

于 2013-10-23T14:00:41.677 回答