我正在開發一個共享庫的一部分,因爲代碼是大,我決定把它在很多頭文件和源文件分割,像任何正常的程序:)。做一個C LIB「私人」
的問題是,大多數這些頭的供內部使用,即我不想讓他們從我的媒體庫的外部訪問。所以我正在考慮將它們全部移到一個大的源文件中,並且只提供可見的頭文件。
這樣做是個好主意嗎?我應該擔心可見度嗎?
感謝
我正在開發一個共享庫的一部分,因爲代碼是大,我決定把它在很多頭文件和源文件分割,像任何正常的程序:)。做一個C LIB「私人」
的問題是,大多數這些頭的供內部使用,即我不想讓他們從我的媒體庫的外部訪問。所以我正在考慮將它們全部移到一個大的源文件中,並且只提供可見的頭文件。
這樣做是個好主意嗎?我應該擔心可見度嗎?
感謝
而是合併頭,只是讓他們沿着你的源文件,也不要「發佈」他們作爲開發包的一部分。作爲一個例子,linux內核在源碼樹中有很多頭文件,但只有某些頭文件暴露給應用程序(在include
結構中)。
是的,你應該擔心符號的可見性。在Windows上,設置爲使用DLLEXPORT。在Linux上,定義DLLEXPORT以設置默認符號可見性,但是使用-fvisibility = hidden編譯所有內容。有一個Ulrich Drepper文章很有用。
包含文件,你可以將它們分爲目錄和/或你可以使用你的包裝系統,把剛纔複製的公共文件。
你應該從「清潔」角度來處理它;請勿發送包含您不打算撥打電話的功能的標題。不要記錄您沒有發送標題的功能。
如果有人真的想調用一個函數庫中的,他們可以,但你應該儘量說清楚,這是一個不支持的情況下使用,它是他們的問題,如果這一切都錯了。
我明白了。這是一個很好的觀點,我應該認爲它是笑話。 TY – scooterman 2009-11-21 22:02:34
您打賭......這並不總是一個明顯的方法來在內部使用標題,但它確實是一個合理的方法。當然,你不能讓你的「公共」標題依賴於內部標題... – jheddings 2009-11-21 22:05:38