Роббинс Арнольд
Шрифт:
10. Специальный аргумент '
11. Порядок, в котором приведены опции, не должен играть роли. Однако, для взаимно исключающих опций, когда одна опция перекрывает установки другой, тогда (так сказать) последняя побеждает. Если опция, имеющая аргумент, повторяется, программа должна обработать аргументы по порядку. Например, '
12. Нормально, когда порядок аргументов имеет для программы значение. Каждая программа должна документировать такие вещи.
13. Программы, читающие или записывающие именованные файлы, должны трактовать единственный аргумент '
Отметим, что многие стандартные программы не следуют всем указанным соглашениям. Главной причиной является историческая совместимость; многие такие программы предшествовали систематизации этих соглашений.
2.1.2. Длинные опции GNU
Как мы видели в разделе 1.4.2 «Поведение программ», программам GNU рекомендуется использовать длинные опции в форме
1. У программ, реализующих инструменты POSIX, каждая короткая опция (один символ) должна иметь также свой вариант в виде длинной опции.
2. Дополнительные специфические для GNU опции не нуждаются в соответствующей короткой опции, но мы рекомендуем это сделать.
3. Длинную опцию можно сократить до кратчайшей строки, которая остается уникальной. Например, если есть две опции
4. Аргументы опции отделяются от длинных опций либо разделителем, либо символом
5. Опции и аргументы могут быть заинтересованы в операндах командной строки,
6. Аргументы опций могут быть необязательными. Для таких опций считается, что аргумент присутствует, если он находится в одной строке с опцией. Это работает лишь для коротких опций. Например, если -х такая опция и дана строка '
7. Программы могут разрешить длинным опциям начинаться с одной черточки (Это типично для многих программ X Window.)
Многое из этого станет яснее, когда позже в этой главе мы рассмотрим
GNU Coding Standards уделяет значительное место перечислению всех длинных и коротких опций, используемых программами GNU. Если вы пишете программу, использующую длинные опции, посмотрите, нет ли уже использующихся имен опций, которые имело бы смысл использовать и вам.
2.2. Базовая обработка командной строки
Программа на С получает доступ к своим аргументам командной строки через параметры
Практически между двумя этими объявлениями нет разницы, хотя первое концептуально более понятно:
Рис. 2.2. Память для
По соглашению,