4

私は、多くのコマンドライン引数とフラグを急速に取得しているコンソールアプリケーションを書いています。このため、ユーザーがこれらのフラグの説明とそれらが果たす目的にアクセスできるようにしたいと思います。

私が考えることができるいくつかの可能な解決策があります

  • READMEファイルを作成して、実行可能ファイルと同じディレクトリに貼り付けることができます。利点はシンプルでポータブルですが、欠点は誰かがファイルを簡単に削除/編集できることです。
  • メッセージ全体をプログラム内の変数に貼り付けて、ユーザーが入力したときなどに画面に出力することができますmycmd --help。利点は、実行可能ファイルにとどまり、編集できないことです。欠点は、以下のようなものが浮かんでいるため、コードにあります。

    const char[] helpmsg = "Line1\n"
                           "Line2\n"
                           "...\n"
                           "LineN\n";
    
  • プログラムのエントリを作成することはできmanますが、アプリケーションはWindowsとLinuxでほぼ同じように使用されるため、これはあまり移植性がありません。

質問はおそらく好みの問題だと思いますが、過去に人々が使用したことを考えていなかった他の解決策があるかどうかだけ興味がありました。

理想的には、開発者(現時点では私)が編集して更新し続けるのは簡単ですが、他の人が実際にそれを台無しにすることはできないものです。

4

4 に答える 4

8

ブーストプログラムオプションライブラリの使用を検討してください。

于 2011-08-26T09:12:14.290 に答える
6

ヘルプメッセージを印刷するために、私は通常このための関数を使用します。したがって、起動時または実行時に使用できます。例えば:

void usage(char* progName)
{
  cout << progName << "[options]" << endl <<
      "Options:" << endl <<
      "-h | --help        Print this help" << endl <<
      "-v | --version     Print the SVN version" << endl <<
      "-V | --Version     Print the proxy version" << endl <<
      "-d | --daemonize   Run as daemon" << endl <<
      "-P | --pidfile     Path to PID file (default: " <<
        WPASUP_PROXY_DEFAULT_PID_FILE << ")" << endl <<
      "-l | --logging     Path to logging file (default: " <<
        WPASUP_PROXY_DEFAULT_LOGGING << ")" << endl <<
      "-i | --ip          The IP address of the main application (default: " <<
        WPASUP_PROXY_MAIN_APP_IP << ")" << endl <<
      "-p | --port        The port number of the main application (default: " <<
        WPASUP_PROXY_DEFAULT_MAIN_APP_PORT << ")" << endl <<
      "-w | --wpa_cli     Path to wpa_cli program (default: " <<
        WPASUP_PROXY_DEFAULT_WPA_CLI << ")" << endl;
}

必要に応じてprintf関数を使用することもできます...これは一般的な方法だと思いますが、誰かがより良いアイデアを持っていれば、私は興味をそそられます!

よろしく!

于 2011-08-26T09:12:58.827 に答える
1

READMEを作成prog --helpして、コンソールに印刷することもできます。

于 2011-08-26T09:30:29.850 に答える
0

getopt Cライブラリを使用できます。このライブラリの目標は、複数のオプション(短い形式または長い形式)を正確に解析して使用できるようにすることです。

getopts(同様の機能を持つシェルスクリプトで使用されるプログラムもあることに注意してください)

于 2011-08-26T09:26:33.510 に答える