2014-10-20 57 views
1

Flint庫將所有頭文件放入$PREFIX/include/flint/。然後Arb庫包括Flint頭文件。這兩個是一個更好的做法設置任意將它們包括:包含「flint.h」或「flint/flint.h」是更好的做法嗎?

  1. #include "flint.h"
  2. #include "flint/flint.h"

優點/缺點:

如果套利和弗林特被安裝在/usr/include(例如,在Debian),然後用2.,用戶不必做任何事情,但用1.,用戶需要使用-I/usr/include/flint

因此,使用Arb庫的用戶只需要爲所需的所有庫指定包含路徑(-I)到$PREFIX/include即可。用1,必須包含路徑$PREFIX/include/flint,所以它看起來更多的工作。

+2

我個人比較喜歡2.表單。 – 2014-10-20 15:13:52

+1

如果其他人在另一個項目中也有flint.h,並且您還需要使用該文件呢?您將需要使用「flint/..」表單。所以從一開始就堅持。 – RedX 2014-10-20 15:16:57

+1

爲什麼這個問題應該以意見爲基礎關閉?有一個令人信服的技術論點,爲什麼第二種形式應該是首選。 – pmr 2014-10-20 15:27:22

回答

4

始終使用相對於/usr/include的路徑。通過這種方式,您的代碼將在大多數UNIX系統上開箱即用,並避免名稱衝突(請參閱標頭util.h)。

只要您的項目需要移植到開發人員較少的平臺(主要是Windows),您的構建系統將需要確定您的依賴關係的位置並設置適當的編譯器開關。

+0

謝謝!所以2.是要走的路。 – 2014-10-20 15:17:47

2

圖書館的開發人員傾向於將A類放入頭文件A.h.如果您使用兩個碰巧具有相同名稱的類的庫,則可能會發生這樣的情況:您包含來自錯誤庫的頭文件,具體取決於通過-I傳遞的包含目錄的順序。它有時會發生。 C++名稱空間機制在這裏沒有幫助。這樣做:的

#include "x/A.h" 

,而不是僅僅

#include "A.h" 

可以幫助你避免這些類型的名稱衝突,並確保阿從x庫包含,而不是,例如,從Y庫。

相關問題