2026-04-30 15:57:21 +04:00
2026-04-30 15:57:21 +04:00
2026-04-30 15:57:21 +04:00
2026-04-30 15:57:21 +04:00
2026-04-30 15:57:21 +04:00
2026-04-30 15:57:21 +04:00
2026-04-30 15:57:21 +04:00
2026-04-30 15:57:21 +04:00
2026-04-30 15:57:21 +04:00

ArgsParse

Простой парсер аргументов на C и макросах.

Использование

Функция main изменяется. Пример:

#include "argsparse.h"

/* Параметры */
arg_property_t config[] = {
    "--hello",
    "-h/--help",
    "-o/--out=filename"
};

/* Их количество */
size_t conf_size = 2;

/* 
 * main принимает: 
 *     args_t              - переменная для парсинга аргументов
 *     args_config_t       - массив типа arg_property_t
 *     args_config_size_t  - размер конфигурации
 */

int main(args_t argv, args_config_t config, args_config_size_t conf_size) {
    if (argv->ArgsGetSimpleSize()) {
        if (argv->ArgsGetSimpleNumbers()[0] == 0) {
            puts("Hello, world!");
        }
        if (argv->ArgsGetSimpleNumbers()[0] == 1) {
            puts(
                "Options:"                                           "\n"
                "    " "--hello    " " - " "print \"Hello, world!\"" "\n"
                "    " "-h / --help" " - " "print this help"         "\0"
            );
        }
    } else {
        puts("Unknown option!");
    }
    return EXIT_SUCCESS;
}

Методы обьекта типа args_t

args_t->ArgsGetSimpleFlags();     /* Получить массив обычных флагов */
args_t->ArgsGetNamesVals();       /* Получить массив значений именнованых флагов */
args_t->ArgsGetNamesFlags();      /* Получить массив именнованых флагов */ 
args_t->ArgsGetDefault();         /* Получить стандартный параметр */
args_t->ArgsGetSimpleSize();      /* Получить количество обычных флагов */
args_t->ArgsGetNamesSize();       /* Получить количество именнованых флагов */
args_t->ArgsGetSimpleNumbers();   /* Получить массив номеров обычных флагов в конфигурации */
args_t->ArgsGetNamesNumbers();    /* Получить массив номеров именнованых флагов в конфигурации */
Description
Парсер аргументов для C на макросах
Readme 48 KiB