下一步: , 上一步: , 上層: 設計建議   [目錄][索引]


3.3 使用非標準功能

許多現有的 GNU 功能,相較於同等級的 Unix 功能,提供了一些方便的擴充功能。是否要在實作你的程式時使用這些擴充功能,是個難題。

從一方面來看,使用這些擴充功能可以讓程式更簡潔。但從另一方面來看,除非能取得其他的 GNU 工具,否則人們將無法建置這個程式。這可能會導致程式在較少種類的機器上運作。

對於某些擴充功能,可能很容易同時提供兩種替代方案。例如,你可以使用「關鍵字」INLINE 定義函式,並將其定義為巨集,使其展開為 inline 或無,取決於編譯器。

一般來說,如果可以簡單地不用擴充功能就能做到,或許最好不要使用它們,但如果它們能帶來很大的改進,則可以使用擴充功能。

這個規則的一個例外是大規模、已建立的程式(例如 Emacs),它們在各種系統上執行。在這些程式中使用 GNU 擴充功能會讓許多使用者不高興,所以我們不這樣做。

另一個例外是用於編譯一部分的程式:任何必須使用其他編譯器編譯,以便啟動 GNU 編譯工具的程式。如果這些程式需要 GNU 編譯器,那麼沒有人可以在沒有事先安裝它們的情況下編譯它們。在某些情況下,這將會非常麻煩。