libConfuse 是一個 ISC 授權的開源庫,支持 Section、多種數據類型、嵌套 Include、環境變量展開等特性,API 簡單易用,適合嵌入式與桌面應用統一配置管理。
${VAR}、嵌套 Include# 下載 wget https://www.nongnu.org/confuse/confuse-2.7.tar.gz tar xf confuse-2.7.tar.gz cd confuse-2.7 # 配置並編譯庫 ./configure make -C src # 編譯示例 make -C examples ./examples/simple # 運行測試
confuse/ 目錄config.h、src/confuse.c、src/confuse.h、src/lexer.cconfig.h:註釋 #define ENABLE_NLS 1(若編譯報錯)confuse.c:#include <config.h> → #include "config.h"app.cfg)server {
host = "192.168.1.100"
port = 8080
enable_ssl = true
}
database {
path = "/var/lib/app/data.db"
max_connections = 50
}
cfg_opt_t opts[] = {
CFG_SIMPLE_STR("host"),
CFG_SIMPLE_INT("port"),
CFG_SIMPLE_BOOL("enable_ssl"),
CFG_END()
};
cfg_t *cfg = cfg_parse("app.cfg", opts);
const char *host = cfg_getstr(cfg, "server.host");
int port = cfg_getint(cfg, "server.port");
// 修改後寫回
cfg_setstr(cfg, "server.host", "10.0.0.1");
cfg_write(cfg, "app.cfg");
cfg_free(cfg);
| 平台 | 配置規模 | 全量讀取 | 單項寫入 |
|---|---|---|---|
| PC (Linux) | 1.5k 行 | <10 ms | <10 ms |
| ARM (嵌入式 Linux) | 1.5k 行 | <200 ms | ~300 ms |
顯著優於 XML 解析方案,適合資源受限設備。