mva
22.02.2013 10:39 N900
Glibc — кусок фекалий! Если юзаешь getopt_long и optional_argument, то есть такая вот недокументированная штука:
[вводные данные: --user, -u — с опциональным аргументом, --file, -f — с обязательным]
mva@note ttt % ./a.out --user s
(null)
mva@note ttt % ./a.out --user=s
s
mva@note ttt % ./a.out -u s
(null)
mva@note ttt % ./a.out -us
s
mva@note ttt % ./a.out --file s
s
mva@note ttt % ./a.out --file=s
s
mva@note ttt % ./a.out -fs
s
mva@note ttt % ./a.out -f s
s
P.S. Дедфуд с криками "сишечка говно, viva la C++!" может сразу проходить мимо. Иначе его список истеричек пополнится ещё и мной (ибо сам он отправится в соответствующий список у меня).
Си не говно, инструмент под задачу. Если тебе нужно парсить опции командной строки, впрочем, то ты выбрал уже не то.
А зачем нужен getopt_long? I mean, он чем-то отличается от просто getopt?
например тем, что соотносит длинные и короткие опции, не? :)
(предрекаю потоки говн) В питоне обычный getopt умеет вот так:
try:
options, operands = getopt.getopt(argv[1:], 't:a:c:d:hl:', ['type=', 'address=', 'device=', 'config=', 'help', 'level='])
except getopt.GetoptError, why:
print '%s: %s' % (argv[0], why)
print usage(argv)
exit(0)
for name, value in options:
if name in ['-t', '--type']:
data['type'] = value
elif name in ['-a', '--address']:
data['address'] = value
elif name in ['-d', '--device']:
data['device'] = value
elif name in ['-l', '--level']:
data['level'] = value
elif name in ['-c', '--config']:
data['config'] = value
elif name in ['-h', '--help']:
print usage(argv)
exit(0)
А boost.program_options ваще заебись.
Или я не понял, что значит "соотносит длинное с коротким". Что такое длинный и чем он отличается от короткого, ясно. Неясно, как их соотносить
getopt лучше, потому как он есть везде. Буст нормально хотя бы в общих чертах знают два человека на планете, потому не нужен.
Что, слишком толсто? :(
Ппц ты недооцениваешь число бустоебов. Олсо, буст норм и няша, если всякое сибыдло его ниасилило — сибыдло не нужно.
"бустоёбы" != "знающие буст". Хули тут говорить, если даже об отсутствии в C массивов как таковых знают хорошо если 10% сиёбов? Плюсы при таком раскладе не знает толком никто