[英]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.