比方說:
void ** (*d) (int &, char **(*)(char *, char **));
光是解讀這種長得莫名其妙的 type 就很花時間了,像上面那個就會變成
d is a pointer to a function that takes two parameters:
a reference to an int and a pointer to a function that takes two parameters:
a pointer to a char and a pointer to a pointer to a char
and returns a pointer to a pointer to a char
and returns a pointer to a pointer to void
每次看到這類東西的第一個想法就是想抓著拿這種東西問我的人的頭去撞牆,看看敲擊後的聲音是不是很清脆。
well,C 有自己 parse 型態宣告的一套規則 (雖然我從來沒有背起來過 XD) 這套規則其實 google 一定找得到,像是這篇文章,不過基於每次都要重新找很麻煩,所以就出現了這篇文章XDD
不過背規則還是很累,而且簡單的東西不用背,複雜的東西還要自己 parse 一定是腦袋有洞, 因為都有現成的東西可以用了:cdecl
只是就算有現成的東西能 parse 還是無法阻止我想抓著寫出這種東西的人的腦袋去撞牆的衝動
沒有留言:
張貼留言