簡體   English   中英

在C中多次聲明一個函數有什么意義?

[英]What sense does it make to declare a function more than one time in C?

我已經看到幾次,頭文件中的函數原型聲明實際上在c文件中重復了。

可以在C中多次聲明一個函數-但是它有什么意義? 只是為了提高可讀性,還是我缺少一些更深入的見解?

有可能的。 這沒有任何意義。

但這也不會造成任何傷害。 您可以根據需要多次聲明一個函數,但是每個這樣的聲明必須與其他聲明相同。 因此,這樣做毫無意義。 正如有人建議的那樣,可能是復制/粘貼錯誤。

但是,您只能有一個函數定義 ,該函數定義應該始終在c文件中。


這是您該如何做:

  • 屬於調用方接口的函數聲明應該位於h文件中,並且僅存在於此文件中。

  • 僅可從c文件本身內部使用的局部(私有)函數的函數聲明,應僅在c文件中,並且在那里。 此類函數應聲明並定義為static

重復的函數聲明沒有任何有用的語義目的,但是它們可能由於歷史原因,由於本地編碼約定或某些其他原因而出現。

例如,可能是本地編碼約定,即每個源文件中的每個函數都在該文件的開頭原型化。 這具有一些次要的實用工具,例如用作每個文件中定義的功能的清單,並使每個文件中的功能能夠忽略是否在標頭中聲明同一文件中的其他功能的任何擔憂。

此外,相同功能或對象的多個聲明不一定必須相同 ,它們只需要兼容即可 在某些情況下,在標頭中提供一個不太具體的原型,而在包含函數定義(它本身又充當另一個聲明)的源文件中提供一個更具體的原型可能是有意義的。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

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