Cでコマンドライン引数を解析するための標準化された方法はありますか?

いくつかの名前

私はCプログラミング言語を学び、それを使っていくつかの基本的なことをしようとしています。私が直面した問題は、コマンドライン引数をどのように解析するかです。私はこの回答を読みunistd.h、標準のN1570内の関数のライブラリの概要を見つけようとしましたしかし、残念ながら、そこでは定義されていません(私が理解できる限り、POSIX準拠のOSでのみ機能します)。

AFAIK Windowsは実際にはPOSIXに準拠していないため、上記の回答のようなものです。

#include <unistd.h>

int main(int argc, char *argv[]){
    int opt;
    while((opt = getopt(argc, argv, "ilv") != -1){
        //do some with it
    }
}

本当にポータブルではありません。

質問:コマンドライン引数を解析するための標準化された移植可能な唯一の方法は、自分で行うことですか?

カミルクク

Cでコマンドライン引数を解析するための標準化された方法はありますか?

はいあります。C委員会ではなく、他の委員会によって標準化されています。最も一般的に普及しているのは、ユーティリティ規約getoptユーティリティを備えたPOSIXです。argpでGNU引数構文使用するのは、楽しくてかっこいいです。一般的に使用されるグニュースもあるのgetopt_longのgetoptと長い引数をサポートするために。

コマンドライン引数を解析するための唯一の標準化された移植可能な方法は、自分でそれを行うことですか?

コマンドラインを解析するためのC11の方法で標準化されたものはありません。C11:メインの引数は文字列ですが、彼らはしている値は、単に実装定義であることのみを指定、

argcの値がゼロより大きい場合、配列メンバーargv [0]からargv [argc-1]までは、プログラムの起動前にホスト環境によって実装定義の値が与えられる文字列へのポインターを含むものとします。目的は、ホストされた環境の他の場所からプログラムを起動する前に決定された情報をプログラムに提供することです。

C標準では「コマンドライン」の抽象化が導入されていないため、「コマンドライン引数」とさらに「コマンドライン引数の解析」で構成される抽象化は定義されていません。コマンドライン引数を解析するための標準化された方法を導入することは、C標準の範囲外だと思います。

最も移植性の高い方法は、最も移植性の高いコード記述して使用することです。実際、最も移植性の高いコードは、非標準のCライブラリを使用せず、最も移植性の高い方法で「自分で実行」します。考えられるすべてのアーキテクチャと環境をターゲットにする意味はほとんどありません。GNU / Linuxのみを使用するgetopt場合、クレイジーな環境への移植性を維持しargpたい場合や、GNU / Linux固有のシステムのみをターゲットにしたい場合に使用します。newlibのgetoptような組み込みシステム用のライブラリでさえ、実際に普及しており実装されています。他の人にとっては、getoptのコードを他のソースからプログラムにコピー/インクルードするだけで、コードがない環境から保護できます。getoptgetopt_long

この記事はインターネットから収集されたものであり、転載の際にはソースを示してください。

侵害の場合は、連絡してください[email protected]

編集
0

コメントを追加

0

関連記事

分類Dev

コマンドの概要を書くための標準はありますか?

分類Dev

SRFIをロードするための標準化された方法はありますか?

分類Dev

ホスト名ルックアップを実行するための標準のコマンドラインツールはありますか?

分類Dev

C89で固定幅の整数を使用するための確立された/標準化された方法はありますか?

分類Dev

Linuxコマンドラインスイッチと引数の標準はありますか?

分類Dev

Pythonで2つの変数を交換する標準化された方法はありますか?

分類Dev

Cの標準ライブラリで配列をベクトル化された形式で表現する方法はありますか?

分類Dev

ダッシュと引数に標準のコマンドライン規則はありますか?

分類Dev

onmessageイベントハンドラーで独自のpostMessageを認識するための標準的な方法はありますか?

分類Dev

サイトからコピーされたコマンドから先頭の「$」/「#」を削除するために作成できるFish関数はありますか?

分類Dev

C ++でゼロコピーIPCを実行するための標準準拠の方法はありますか?

分類Dev

オプションのコマンドライン引数を指定する文字列リテラルを備えたプログラムがあります。これらのオプションのコマンドライン引数をcで処理するにはどうすればよいですか?

分類Dev

意味のあるデフォルト値を設定しながら、コマンドラインで引数が指定されたかどうかを判断する方法はありますか?

分類Dev

WebStormでHTML5ボイラープレートプロジェクトを作成しました。「dist」フォルダをコンパイルするための標準コマンドはありますか?

分類Dev

Python3でコマンドライン引数を検証する他の方法はありますか?

分類Dev

Apache Velocity:コマンドラインからテンプレートの正確さを確認する標準的な方法はありますか?

分類Dev

コマンドラインからbehaviorSpace実験を実行するための引数「速度」はありますか

分類Dev

コマンドラインから暗号化されたドライブをロックする方法はありますか?

分類Dev

1つ以上の指定されたラベルの出力の絶対パスを決定するためのBazelコマンドラインはありますか?

分類Dev

設定ファイルを解析するための標準的な普及した方法はありますか

分類Dev

Fortranパラメータ配列のセグメントを複数行に割り当てるための標準準拠の方法はありますか?

分類Dev

複数のターゲットフレームワークを同時にサポートする.NETライブラリを作成するための信頼できる(標準化された)アプローチはありますか?

分類Dev

永続的な結果を得るための「top」コマンドの引数はありますか?

分類Dev

Clang:コマンドラインまたはPythonからサポートされているC ++標準を確実に検出します

分類Dev

Pythonコードのインデントを壊さずに表示するために複数のリテラル行を配置する方法はありますか?

分類Dev

初期化リストコンストラクターの不整合に対処するためのC ++標準の計画はありますか?

分類Dev

次のコマンドで作成したファイルを復号化する方法はありますか?

分類Dev

Ubuntuアプリを構築するための標準的なUI / UX /デザインの原則やガイドラインはありますか?

分類Dev

英語の動詞の活用をチェックするための標準のUnixコマンドはありますか?

Related 関連記事

  1. 1

    コマンドの概要を書くための標準はありますか?

  2. 2

    SRFIをロードするための標準化された方法はありますか?

  3. 3

    ホスト名ルックアップを実行するための標準のコマンドラインツールはありますか?

  4. 4

    C89で固定幅の整数を使用するための確立された/標準化された方法はありますか?

  5. 5

    Linuxコマンドラインスイッチと引数の標準はありますか?

  6. 6

    Pythonで2つの変数を交換する標準化された方法はありますか?

  7. 7

    Cの標準ライブラリで配列をベクトル化された形式で表現する方法はありますか?

  8. 8

    ダッシュと引数に標準のコマンドライン規則はありますか?

  9. 9

    onmessageイベントハンドラーで独自のpostMessageを認識するための標準的な方法はありますか?

  10. 10

    サイトからコピーされたコマンドから先頭の「$」/「#」を削除するために作成できるFish関数はありますか?

  11. 11

    C ++でゼロコピーIPCを実行するための標準準拠の方法はありますか?

  12. 12

    オプションのコマンドライン引数を指定する文字列リテラルを備えたプログラムがあります。これらのオプションのコマンドライン引数をcで処理するにはどうすればよいですか?

  13. 13

    意味のあるデフォルト値を設定しながら、コマンドラインで引数が指定されたかどうかを判断する方法はありますか?

  14. 14

    WebStormでHTML5ボイラープレートプロジェクトを作成しました。「dist」フォルダをコンパイルするための標準コマンドはありますか?

  15. 15

    Python3でコマンドライン引数を検証する他の方法はありますか?

  16. 16

    Apache Velocity:コマンドラインからテンプレートの正確さを確認する標準的な方法はありますか?

  17. 17

    コマンドラインからbehaviorSpace実験を実行するための引数「速度」はありますか

  18. 18

    コマンドラインから暗号化されたドライブをロックする方法はありますか?

  19. 19

    1つ以上の指定されたラベルの出力の絶対パスを決定するためのBazelコマンドラインはありますか?

  20. 20

    設定ファイルを解析するための標準的な普及した方法はありますか

  21. 21

    Fortranパラメータ配列のセグメントを複数行に割り当てるための標準準拠の方法はありますか?

  22. 22

    複数のターゲットフレームワークを同時にサポートする.NETライブラリを作成するための信頼できる(標準化された)アプローチはありますか?

  23. 23

    永続的な結果を得るための「top」コマンドの引数はありますか?

  24. 24

    Clang:コマンドラインまたはPythonからサポートされているC ++標準を確実に検出します

  25. 25

    Pythonコードのインデントを壊さずに表示するために複数のリテラル行を配置する方法はありますか?

  26. 26

    初期化リストコンストラクターの不整合に対処するためのC ++標準の計画はありますか?

  27. 27

    次のコマンドで作成したファイルを復号化する方法はありますか?

  28. 28

    Ubuntuアプリを構築するための標準的なUI / UX /デザインの原則やガイドラインはありますか?

  29. 29

    英語の動詞の活用をチェックするための標準のUnixコマンドはありますか?

ホットタグ

アーカイブ