[英]Identifiers missing in function prototype
我正在閱讀有關通過C在Unix中完成套接字編程的功能,這對我來說特別有趣,因為它使用的語法是-:
int pr_usrreq(struct socket *so , int req, struct mbuf *m0 , *m1 , *m2);
上面的示例來自此鏈接 。
有趣的是,這種有效的C語法如何?
*m1
和*m2
struct mbuf *m0 , *m1 , *m2
之后是否應該沒有標識符?
還是這只是一種錯誤的表示方式?
從這里的文本看來:
int pr_usrreq(struct socket *so, int req, struct mbuf *m0 , *m1 , *m2);
實際上應該是:
int pr_usrreq(struct socket *so, int req, struct mbuf *m0, struct mbuf* m1, struct mbuf *m2);
這只是一個錯字。
這看起來像是ANSI原型與K&R功能頭之間的混合體。 鏈接說m0
, m1
和m2
應該是struct mbuf*
類型。 需要像這樣明確地編寫:
int pr_usrreq(struct socket *so , int req, struct mbuf *m0 , struct mbuf *m1 , struct mbuf *m2);
您提供的表格絕對不正確。
在K&R樣式*中,(根據定義,無原型)聲明為
int pr_usrreq();
並且函數定義將以
int pr_usrreq(so, req, m0, m1, m2)
struct socket *so;
int req;
struct mbuf *m0, *m1, *m2; {
好像有人通過錯誤地從舊格式轉換而得到了錯誤的“原型”。
* K&R樣式在當前C語言中已棄用,任何版本的C ++不支持。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.