параметры командной строки с двойной чертой вместо getopt - PullRequest
2 голосов
/ 13 октября 2011

Как я могу принять аргумент командной строки таким образом:

./a.out --printall

, чтобы внутри моей программы у меня было что-то вроде

if (printall) {
  // do something
}

Я не хочу этого делать:

if (argc == 2)
  //PRINTALL exists

, поскольку моя программа может иметь несколько параметров командной строки:

./a.out --printread
./a.out --printwrite

Во-вторых, я не хочу использовать getopt, так что команда становится

./a.out -printall 1

Я просто нахожу ./a.out --printall чище, чем ./a.out -printall 1

Редактировать: Я видел программы, которые делают это:

./a.out --help

Интересно, как они работают.

Ответы [ 2 ]

3 голосов
/ 13 октября 2011

(По поводу разбора аргумента часть вопроса:)

Вам понадобится getopt_long() от <unistd.h>. Это расширение GNU.

Для большей переносимости, вы можете рассмотреть Boost опции программы , хотя это скомпилированная библиотека.

2 голосов
/ 13 октября 2011

Аргументы командной строки нельзя использовать для запуска условной компиляции.Программа уже скомпилирована до ее запуска.

Это очень педантичный ответ.Общие параметры командной строки см. В ответе Kerrek SB.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...