2
最近,我正在閱讀GSM音頻編碼的源代碼。這些代碼是在1992年或以後編寫的。爲什麼主要P2((ac,av),int ac,char ** av)?
還有像一些奇怪的代碼:
main P2((ac, av), int ac, char ** av)
void Gsm_Coder P8((S,s,LARc,Nc,bc,Mc,xmaxc,xMc)
是那些代碼使用的舊方法? P2或P8的用途是什麼?
最近,我正在閱讀GSM音頻編碼的源代碼。這些代碼是在1992年或以後編寫的。爲什麼主要P2((ac,av),int ac,char ** av)?
還有像一些奇怪的代碼:
main P2((ac, av), int ac, char ** av)
void Gsm_Coder P8((S,s,LARc,Nc,bc,Mc,xmaxc,xMc)
是那些代碼使用的舊方法? P2或P8的用途是什麼?
這些是使代碼與舊式編譯器兼容的宏,這些編譯器列出括號後的類型。例如,P2
可能會擴大到
main(int ac, char **av)
或
main(ac,av)
int ac;
char **av;
運行gcc -E
看到預處理輸出。
2
和8
是因爲較舊編譯器中的預處理器宏不能包含可變數量的參數,所以您需要爲每個參數計數使用單獨的宏。
我想'P2'和'P8'是宏。追蹤宏定義以找出他們在做什麼。 –