簡體   English   中英

如果我沒有在頭文件中聲明所有函數,會發生什么?

[英]What happens if I don't declare all functions in header?

我目前正在使用GTest進行單元測試,並注意到我並未將寫在目標源代碼(target.c)上的所有函數聲明為其標頭(target.h)。 由於我沒有對那些未聲明的功能進行測試,所以直到現在我才注意到。

現在,似乎這些未聲明標頭的函數可以用作“私有”函數,因為它們不能從測試代碼(包括目標源代碼的標頭)中調用。

我可以將其視為聲明私有功能的一種方式,還是應該出於安全考慮?

不可以,這不能使您的功能不公開。 這只是要求調用者自己終止該功能。 使用靜態關鍵字是創建私有功能的適當方法。 例如:

static void myfunc ()
{
 ...
}

不將其包含在標頭中並不能使其成為私有函數,因為任何其他C文件都可以在其標頭或C代碼中添加extern void myfunc()並獲得對該函數的訪問權限。 在編譯時,所有這些都將被鏈接(假設您正在編譯所有文件)。

但是所有靜態對象將僅具有模塊級別(或文件范圍)可見性

您只需要在Filescope中使用的變量也是如此。

暫無
暫無

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

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