2

以下のようにコマンドのような引数を作ることはできますか?

./exe FROM_FILE=true 

この場合、プログラムでどのように期待するかというと、FROM_FILE 値が true の場合はファイルからデータを取得し、false の場合は標準値を取得できます。目的のために私が見つけた他の選択肢は、使用することです

  1. -オプション
  2. 引数を渡すだけです。しかし、この場合、引数の順序について心配する必要があります。

これは、メイクファイルを実行しているときに思い浮かびました。

$>cat メイクファイル
EXE :
        echo ${FROM_FILE}
$>FROM_FILE=true にする
エコー真
真実
$>
4

4 に答える 4

5

できるよ

FROM_FILE=true ./exe

environ次に、ポインターまたはを使用して、アプリ内から FROM_FILE 環境変数を読み取りますgetenv()http://linux.die.net/man/7/environを参照してください

于 2013-07-17T07:56:38.757 に答える
0

EDIT : 考えれば考えるほど、一般的なコマンド ライン インターフェイスの慣習に反するように思われるのはあまり良い考えではありません。多分あなたはこれを読むべきです: http://www.gnu.org/prep/standards/html_node/Command_002dLine-Interfaces.html

環境変数を試しましたか?

できるよ

FROM_FILE=true ./exe

そしてexe.cで:

[...]
char *file = getenv("FROM_FILE");
if (file == NULL)
  *file = DEFAULT;
[...]

または、コマンド ライン インターフェイスに対するより GNU 的なアプローチについては、getopt または argp を参照してください。( http://www.gnu.org/software/libc/manual/html_node/Parsing-Program-Arguments.html#Parsing-Program-Arguments )

于 2013-07-17T07:57:05.527 に答える
0

可能?まあ、make はどうやらそれを行うので (自分で試したことはありません)、明らかに可能です。ただし、これは確かに珍しい構文であるため、つまずく人もいるかもしれません。

その場合にやりたいことは、おそらく を反復処理しargv[]、フォームのパラメーターを見つけてsomething=something、魔法をかけることです。getoptそれらを使い終わったら、それらをゼロにしてから、面倒な作業をまたは同様のライブラリに引き渡すなど、より通常のことを行うこともできます。

特にこれを一般的なものにしたい場合に考慮すべきことの 1 つは、誰かが を含むファイル名をアプリケーションに渡した場合にどうするかです=。 .

于 2013-07-17T08:00:40.393 に答える