MinGWで引数のワイルドカードが展開されてしまうのを防ぐ方法 - Frost Moon Project
Home >
Tips >
MinGWで引数のワイルドカードが展開されてしまうのを防ぐ方法
MinGWで引数のワイルドカードが展開されてしまうのを防ぐ方法
-
- 問題
- 解決方法
- 問題
-
以下はmain()に渡された引数argvを表示するだけのコードです。
これをVisual C++ 2010 Expression Editionでビルドして実行すると、画像の様にワイルドカードは展開されません。

※分かりやすくするためMessageBox()のタイトルを変更しています
一方、TDM-GCCでビルドして実行すると、ワイルドカードが展開されてしまいます。

- 解決方法
-
引数の解析を行う__getmainargs()を直接呼び出します。
この時、_DoWildCardを0とすることで、ワイルドカードの展開を防ぐことが出来ます。
int __getmainargs(
int * _Argc,
char *** _Argv,
char *** _Env,
int _DoWildCard,
_startupinfo * _StartInfo);
今回は引数取得をmain()で行い、従来のmain()の処理を_main()で行います。
無事、ワイルドカードの展開を防ぐことが出来ました。

因みに、展開するかどうかMinGWに任せる場合は"extern int _CRT_glob;"を適当な行に追加し、
_DoWildCardの部分を_CRT_globとします。
- 関連Tips
-
MinGWで_tmain()を使用する方法
Copyright(C)Frost Moon Project
Home >
Tips >
MinGWで引数のワイルドカードが展開されてしまうのを防ぐ方法