/
githubmirror
/
inih
Обзор
Документация
Войти
/
githubmirror
/
inih
Код
Запросы
0
Пакеты
0
Релизы
0
Аналитика
Безопасность
master
examples/ini_xmacros.c
46 строк
1 KB
Dimitri Papadopoulos Orfanos
Minor tweaks (#204)
30 авг 2025, 12:47
Не верифицирован
30 авг 2025, 12:47
216e21b
Код
Авторство
О чём код?
/* Parse a configuration file into a struct using X-Macros */ #include <stdio.h> #include <string.h> #include "../ini.h" /* define the config struct type */ typedef struct { #define CFG(s, n, default) char *s##_##n; #include "config.def" } config; /* create one and fill in its default values */ config Config = { #define CFG(s, n, default) default, #include "config.def" }; /* process a line of the INI file, storing valid values into config struct */ int handler(void *user, const char *section, const char *name, const char *value) { config *cfg = (config *)user; if (0) ; #define CFG(s, n, default) else if (strcmp(section, #s) == 0 && \ strcmp(name, #n) == 0) cfg->s##_##n = strdup(value); #include "config.def" return 1; } /* print all the variables in the config, one per line */ void dump_config(config *cfg) { #define CFG(s, n, default) printf("%s_%s = %s\n", #s, #n, cfg->s##_##n); #include "config.def" } int main(int argc, char* argv[]) { if (ini_parse("test.ini", handler, &Config) < 0) printf("Can't load 'test.ini', using defaults\n"); dump_config(&Config); return 0; }