簡體   English   中英

函數原型中缺少標識符

[英]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功能頭之間的混合體。 鏈接說m0m1m2應該是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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM