LINUX.ORG.RU

Подскажите как при помощи «getopt_long()» выбирать только «свои» опции.

 clo, ,


0

1

Мне нужно передавать опции в библиотеку и программу вперемешку и при этом хочется использовать getopt_long(). Ну типа как это делает gtk только не хочется писать свой парсер c нуля как в gtk.

★★★★★

Последнее исправление: cvv (всего исправлений: 2)

ни разу не юзал getopt - мне он чем-то не понравился...
но вот легкая либа, с которой можно делать такие штуки (в хедере описано продробнее):

#include "libarg.h"

void usage(char *fn)
{
	printf("%s: arguments error\n", fn);
//	exit(1);
}

int main(int argc, char **argv)
{
	int ret;
	int bool_arg;
	int int_arg1, int_arg2;
	char *str;
	libarg_ctx *ctx;

	ctx = libarg_init(usage);

	libarg_add_flag(ctx, &bool_arg, 'k', "--keyon");
	libarg_add_int(ctx, 1, &int_arg1, 'd', "device", 1);
	libarg_add_int(ctx, 0, &int_arg2, 'n', "number", 7);
	libarg_add_str(ctx, 0, &str, 's', "string", "default");

	if ((ret = libarg_settle(ctx, 0, argc, argv)) != 0) {
		printf ("error with %s\n", ret > 0 ? argv[ret] : argv[0]);
		goto out;
	} else {
		printf("bool_arg = %d\n", bool_arg);
		printf("int_arg1 = %d\n", int_arg1);
		printf("int_arg2 = %d\n", int_arg2);
		printf("str = %s\n", str);
	}

out:
	libarg_destroy(ctx);

	return 0;
}

metawishmaster ★★★★★
()

Может таки передать параметры ручками? За либы, которые сами тянут параметры из argv, хочется убиват.

phoenix ★★★★
()
Ответ на: комментарий от phoenix

За либы, которые сами тянут параметры из argv, хочется убиват.

Никогда не пользовался gtk, Qt, гуглотестами?

Gvidon ★★★★
()
Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.