[英]I don't understand how inih works
幾個小時以來,我一直在嘗試使用 inih lib 讀取 ini 文件,但我仍然不完全理解這段代碼,尤其是configuration* pconfig = (configuration*)user;
,以及處理程序 function 參數的用途是什么?
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
#include "../ini.h"
typedef struct
{
int version;
const char* name;
const char* email;
} configuration;
static int handler(void* user, const char* section, const char* name,
const char* value)
{
configuration* pconfig = (configuration*)user;
#define MATCH(s, n) strcmp(section, s) == 0 && strcmp(name, n) == 0
if (MATCH("protocol", "version")) {
pconfig->version = atoi(value);
} else if (MATCH("user", "name")) {
pconfig->name = strdup(value);
} else if (MATCH("user", "email")) {
pconfig->email = strdup(value);
} else {
return 0; /* unknown section/name, error */
}
return 1;
}
int main(int argc, char* argv[])
{
configuration config;
if (ini_parse("test.ini", handler, &config) < 0) {
printf("Can't load 'test.ini'\n");
return 1;
}
printf("Config loaded from 'test.ini': version=%d, name=%s, email=%s\n",
config.version, config.name, config.email);
return 0;
}
user
顯然是指向您提供給ini_parse
的configuration
實例的指針。 void*
是 C 中可用指針的唯一類型擦除。
section
是.ini 文件部分的名稱, name
是鍵名, value
是鍵的值。
ini_parse
為每個鍵調用處理程序,將configuration
和解析迭代的結果傳遞給它。 處理程序對該信息的處理由庫的用戶定義。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.