タグ

2014年9月5日のブックマーク (1件)

  • Big Sky :: MinGW コンパイラで argv をワイルドカード展開させない方法

    コマンドラインから「あ*」等とワイルドカードを使用してコマンドを起動した場合、UNIX とは異なり Windows ではプロセス自身が引数を展開します(内部的にではありますが)。 main 関数の argc/argv は MSVC コンパイラであれば setargv.obj というオブジェクトファイルをリンクする事で展開される様になりますが、MinGW ではデフォルトでワイルドカード展開が実行されてしまいます。しかしながら、このワイルドカード展開は各コンパイラベンダーの実装次第という所があり、時に異なる挙動となる場合があります。 そこでワイルドカードは自前でプログラムで展開するのが一番良い訳ですが、MinGW の場合は既述の通り、デフォルトが展開動作となっています。しかし以下のたった1行のおまじないを入れる事で、引数展開が無効となります。 #include <stdio.h> #defin

    Big Sky :: MinGW コンパイラで argv をワイルドカード展開させない方法
    zetamatta
    zetamatta 2014/09/05
    え、そんな動作、マジすか?