普通C有任何廣泛使用的I/O流抽象層嗎?普通C的輸入/輸出流抽象層
通過I/O流抽象層,我指的是任何至少允許創建自定義讀/寫功能的圖層。對於C++,有標準的iostream和boost :: iostreams。對於glibc用戶,可以使用自定義流。如果要求編寫可移植的C代碼,這些將不會有任何好處。
最好使用一個廣泛使用或易於嵌入到源代碼或兩者兼備的庫。
SDL_RWops是一個沒有記錄但廣泛使用的SDL功能,zziplib可以使用它。但是,爲了獲得此功能,將依賴項添加到SDL沒有多大意義。
GLib包含一個GIOChannel抽象,但該庫又相當大,他們說「對Windows的支持只是部分完成」。
但是,上述內容對於解碼器,文件格式閱讀器和信號處理器等小型庫不太令人滿意:它們包含大量不必要的內容,並且LGPL許可可防止將相關部分嵌入到非GPL代碼中。
目前我正在寫一個文件格式,讀者庫,必須儘可能重用和多功能,即用戶可能希望編寫自定義輸入流以支持從內存,網絡,檔案等加載文件。我只是不想重新發明輪子,即編寫我自己的小SDL_RWops。如果zlib或libpng沒有提供一個接口來指定用戶自己的fread和內存分配函數,那麼人們會少用它們。 我想我要寫我自己的或使用iostreams在C++中執行庫並提供一個C接口。 – ahnurmi 2010-06-19 21:46:17
雖然我不同意 - 有時需要更多的抽象 - 今天「沒有廣泛使用的流抽象庫」似乎是正確的答案。 – ahnurmi 2010-06-21 12:56:04