crossplatform.ru

Здравствуйте, гость ( Вход | Регистрация )

 
Ответить в данную темуНачать новую тему
> Получение и обработка параметров командной строки, кто как делает?
ViGOur
  опции профиля:
сообщение 11.10.2007, 13:37
Сообщение #1


Мастер
******

Группа: Модератор
Сообщений: 3296
Регистрация: 9.10.2007
Из: Москва
Пользователь №: 4

Спасибо сказали: 231 раз(а)




Репутация:   40  


Не знаю как кто, но я например делаю это так:
#define IS_ARG(c)   (((c) == '-') || ((c) == '/'))

int _tmain(int argc, char* argv[])
{
    for( --argc, ++argv; argc; argc--, argv++)
    {
        if(IS_ARG(**argv))
        {
            switch(*++*argv)
            {
                case 'a': printf( "%s\n", *++argv);argc--;
                    break;
                case 'b': printf( "%s\n", *++argv);argc--;
                    break;
                default:
                    break;
            }
        }
    }
    return 0;
}


Но многим не нравится данный способ... :D

p.s. написано было по памяти, возможно мог и ошибиться, буду благодарен за поправки.
Перейти в начало страницы
 
Быстрая цитата+Цитировать сообщение
dont
  опции профиля:
сообщение 12.12.2007, 13:10
Сообщение #2


Новичок


Группа: Новичок
Сообщений: 7
Регистрация: 12.12.2007
Пользователь №: 42

Спасибо сказали: 0 раз(а)




Репутация:   0  


А чем getopt_long не угодил?
Или код кроссплатформенный быть должен?
Перейти в начало страницы
 
Быстрая цитата+Цитировать сообщение
ViGOur
  опции профиля:
сообщение 12.12.2007, 13:35
Сообщение #3


Мастер
******

Группа: Модератор
Сообщений: 3296
Регистрация: 9.10.2007
Из: Москва
Пользователь №: 4

Спасибо сказали: 231 раз(а)




Репутация:   40  


Цитата(dont @ 12.12.2007, 13:10) *
Или код кроссплатформенный быть должен?
Не обязательно, просто оригинальное решение, ветка ведь об этом. :)
Перейти в начало страницы
 
Быстрая цитата+Цитировать сообщение
dont
  опции профиля:
сообщение 12.12.2007, 13:41
Сообщение #4


Новичок


Группа: Новичок
Сообщений: 7
Регистрация: 12.12.2007
Пользователь №: 42

Спасибо сказали: 0 раз(а)




Репутация:   0  


Тю, дак зачем изобретать велосипед, который еще и самому автору не нравится?
const char * const short_options = "dhc:l:p:";
const struct option long_options[] = {
        {"daemon",      0,      NULL,   'd'},
        {"help",        0,      NULL,   'h'},
        {"conf",        1,      NULL,   'c'},
        {"log",         1,      NULL,   'l'},
        {"pid",         1,      NULL,   'p'},
        {NULL,          0,      NULL,    0 },
        };
do {
                next_option = getopt_long(argc,argv,
                                        short_options,long_options,NULL);
                switch(next_option)
                {
                case 'h':
                        print_usage(stdout,0);
                case 'c':
                        config_file = optarg;
                        break;
                case 'l':
                        log_file = optarg;
                        break;
                case 'd':
                        daemonize = true;
                        break;
                case 'p':
                        pid_file = optarg;
                        break;
                case '?':
                        print_usage(stdout,1);
                case -1:
                        break;
                default:
                        abort();
                }
        }
Перейти в начало страницы
 
Быстрая цитата+Цитировать сообщение

Быстрый ответОтветить в данную темуНачать новую тему
Теги
Нет тегов для показа


1 чел. читают эту тему (гостей: 1, скрытых пользователей: 0)
Пользователей: 0




RSS Текстовая версия Сейчас: 25.4.2024, 22:53