簡體   English   中英

ANSI C中的超便攜,小型復雜配置文件庫?

[英]Ultra-portable, small complex config file library in ANSI C?

我在ANSI C中尋找一個非常便攜,簡約/小的XML /配置語言庫,沒有外部依賴(或很少),編譯低於100K。 我需要它用於中等復雜的配置文件,它必須支持Unicode。

更多要求:

  1. 可以使用/ embed /靜態鏈接到專有代碼 在信用到期時,將始終給予信用。
  2. 不一定是XML。
  3. 真的, 干凈的代碼 /沒有奇怪或不一致的字符串處理。
  4. UTF-8

謝謝費拉斯。

這在某種程度上類似於這個問題: 嵌入式C項目是否有一個很好的小型XML解析器?

我能夠為C調整以下XML解析器庫的編譯標志,並在我的Ubuntu機器上減少了超過50%的大小。 Mini-XML是唯一接近您請求的內容:

對於這種用例,IMO協議緩沖區比XML更好,更好。 使用協議緩沖區,您可以獲得真實類型和模式,而無需在基礎XML之上對它們進行分層。 語法也更好。

// The schema file: can serve as documentation for what
// configuration values are available.
message MyAppConfig {
  // Set to control the port the app listens on.
  optional int32 port = 1 [default=1234];

  // Set to control the local hostname.
  optional string hostname = 2 [default="localhost"];
}

然后用戶的實際配置如下所示:

# I want to listen on a very high port.
port: 50000

主協議緩沖庫不符合您的標准,因為它在C ++中並且非常大。 我正在研究相同的upb (即“微”protobufs)的更小的實現。 它用~5k的ANSI C編寫,編譯為<50k。

協議緩沖區具有二進制和文本格式,它們是等效的。 我的庫(還)不支持閱讀文本格式,但您可以讓用戶使用Google標准工具將其配置的文本版本提前轉換為二進制格式。 然后你的應用程序本身只需要讀取二進制格式,並且可以只使用upb。

upb剛剛到了冒險用戶可以嘗試的地步,但它仍然有點粗糙的邊緣仍然和API仍然有所改變。 如果你對此感到滿意,你現在可以嘗試潛水。 如果你喜歡更穩定的東西,至少要保持你的雷達。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM