【发布时间】:2021-03-09 01:00:03
【问题描述】:
当我使用 vscode 进行 c 和 c++ 调试时,有时需要一些命令行参数(./runFile args1 args2)。如果我直接点击运行,会显示argv[2] out of range。这是因为我没有输入参数。但是如果我通过命令行输入参数,似乎无法单步执行vscode。我想到的方法是我在main函数的开头使用argv[]=value在这里赋值命令行参数。这样使用会不会有问题?而我只能argv[0]=valueargv[1]=value。有没有办法通过argv=...直接给argv赋值?我试过argv[1]=valueargv[2]=value。可以正常运行。这里有风险吗?比如给argv分配多少内存?
【问题讨论】:
-
你不需要分配给
argv。听起来您想要在命令行中未提供参数的默认值。为此,请检查argc == 1是否并使用一些硬编码的默认值。不要分配给argv。 -
如果没有传入任何内容,则无法分配
argv[1]。在这种情况下,没有存储空间。你可以做什么:提供存储,即分配一个数组char *argv_[] = { argv[0], "arg1", "arg2", nullptr };,然后分配argc = 3; argv = argv_;。
标签: c++ c visual-studio-code