2017-12-27 473 views
0

我试图在Visual Studio中的调试会话期间将命令行参数<(单角括号,不带引号)传递给C++程序。如Project settings for a C++ debug configuration中所述,<作为重定向操作符具有特殊含义,但不指定如何转义它。我试过使用"<"^<,但他们都没有做我想要的。根据预期,从命令行调用带有"<"参数的命令。在Visual Studio中跳转调试命令参数

所以它看起来像调试命令参数是第一次预处理。有没有办法从这个预处理中逃离角色?

+0

请给出您想要使用的完整命令行(“<”,没有别的,这适用于我)和您正在使用的Visual Studio版本。 –

+0

'<'因为它不是一个参数,所以它是一个重定向操作符。它实际上不会将参数传递给您的可执行文件。正如我在问题中所述,我想传递一个参数 - <'字符串。 –

+0

正如我所说:它适用于我。当我输入“<”(带双引号)时,“<”(不带双引号)传递给我的程序。正如我所要求的,请提供更多信息。 –

回答

0

看起来像传递"<"如果使用“启动调试”工作。我正在使用“无需调试即可开始”,因此可以通过将"<"传递给空白控制台应用程序并调用“无需调试即可开始”来重现问题。

“无调试开始”似乎实际上调用了cmd.exe,因此命令参数受制于命令行解释规则。然后问题就变成了如何在命令行中跳出<<外部双引号可以通过使用^<转义,但我仍然不知道如何在双引号内跳转<

我必须说,调试命令参数的解释取决于程序启动的方式会受到不同规则的影响,这有些令人惊讶。

+0

非常有趣。我可以在这里重现,但没有解决办法。最好在MS社区网站上提问(也许在这里重新发布答案)。 –

+0

@Igor Akhmetov,感谢您在这里分享您的解决方案,如果可能的话,您可以将其标记为答案。另外,使用“无需调试即可开始(Ctrl + F5)”和“开始调试(F5)”,我们也可以得到与您相同的结果。对于这个问题,如Werner Henze的建议,您可以将其报告给社区网站:https://developercommunity.visualstudio.com/spaces/8/index.html。感谢您再次分享您的解决方案。祝你今天愉快:) –