2017-12-27 82 views
0

Visual Studioのデバッグセッション中に、コマンドライン引数<(引用符なしの単一の角かっこ)をC++プログラムに渡そうとしています。 Project settings for a C++ debug configurationに記載されているように、<はリダイレクション演算子として特別な意味を持ちますが、エスケープする方法は指定していません。私は"<"^<を使ってみましたが、どれも私が望むことはしません。コマンドラインから"<"引数を指定してコマンドを呼び出すと、正常に動作します。Visual Studioのデバッグコマンドの引数をエスケープする

デバッグコマンドの引数が先に処理されているようです。この前処理から文字をエスケープする方法はありますか?

+0

使用する完全なコマンドライン( "<"、これ以外の何も私にとっては機能しません)と、使用しているVisual Studioのバージョンを入力してください。 –

+0

'<'は引数ではないので動作し、リダイレクト演算子です。実行可能ファイルに実際に引数を渡すことはありません。私が質問で述べたように、私は単一の引数、 '<'文字列を渡したいと思います。 –

+0

私が言ったように:それは私のために働く。 "<"(二重引用符で囲む)を入力すると、二重引用符のない "<"がプログラムに渡されます。だから、私が求めているように、より多くの情報を与えてください。 –

答えて

0

"<"のように思えますが、「デバッグを開始する」が使用されています。私は「デバッグなしで起動」を使用していたので、"<"を空のコンソールアプリケーションに渡して「デバッグなしで起動」を呼び出すことで問題を再現できます。

"Start Without Debugging"は実際にcmd.exeを起動しているようですので、コマンド引数はコマンドラインの解釈ルールの対象となります。質問は、実際に<をコマンドラインでエスケープする方法であることが判明しました。 <二重引用符の外側には、^<を使用してエスケープすることができますが、私はまだ二重引用符で<をエスケープする方法はありません。

デバッグコマンドの引数の解釈は、プログラムの起動方法によって異なるルールが適用されることには多少の驚きがあります。

+0

非常に興味深い。私はここでこれを再現できますが、解決策はありません。 MSのコミュニティサイトで質問をすることは良いでしょう(そして、おそらくここで答えを投稿してください)。 –

+0

@Igor Akhmetov、ここであなたのソリューションを共有してくれてありがとう、可能であれば、答えとしてマークすることができます。さらに、「デバッグなしで開始(Ctrl + F5)」および「デバッグを開始(F5)」を使用して、同じ結果が得られます。この問題については、Werner Henzeの提案のように、コミュニティサイト(https://developercommunity.visualstudio.com/spaces/8/index.html)に報告することができます。ソリューションを再び共有していただきありがとうございます。良い一日を:) –

関連する問題