C++ 如果我没有在命令提示符中输入ARGC值,它是如何初始化的?
当我运行以下代码时:C++ 如果我没有在命令提示符中输入ARGC值,它是如何初始化的?,c++,exit,argc,C++,Exit,Argc,当我运行以下代码时: void main(int argc, char** argv) { if (argc != 2){ fprintf(stderr, "Usage: %s video-dir-path\n", argv[0]); exit(-1); } XFishTracker ft(argv[1]); int id = 0; while (true) { id++; ... ...
void main(int argc, char** argv)
{
if (argc != 2){
fprintf(stderr, "Usage: %s video-dir-path\n", argv[0]);
exit(-1);
}
XFishTracker ft(argv[1]);
int id = 0;
while (true)
{
id++;
...
...
它存在,因为ARGC的值显然不是2。
如果我注释掉exit-1行,就会得到一个断言错误。
我想因为ARGC不是2,所以我的程序不会运行或继续。我如何将argc初始化为2并使程序运行,当它在我甚至无法正确看到命令提示符之前退出时
如何使命令提示符保持不变并提供两个输入,以便argc==2?argc取自您在命令提示符下键入的内容。这里没有足够的信息来查看可执行文件的名称,但是让我们说foo。然后
似乎您还没有给出任何命令行参数,这就是为什么在argc和argv中什么也得不到的原因
您可以给出任意数量的命令行参数。如果您使用的是Visual Studio,请转到项目属性->调试。在那里,您可以看到一个框,命令行参数提供您想要的数量[这不是问题]void main错误。main必须始终返回一个INT。您是如何运行程序的?听起来像是在寻找命令行参数,但实际上并没有给出任何参数。如果有,则argc/argv将具有该数据。对于具有两个参数的程序,argc将为3!如上所述,2个参数将使argc=3,因为第一个参数argv[0]始终是用于调用可执行文件的名称。但是,如何使命令提示符保持不变并提供两个输入?如果您不提供任何关于您正在使用哪个shell/IDE/调试器的指示,我们怎么知道呢?简单地说,您只是使用这些参数运行可执行文件,但我们不知道您正在使用什么来运行它,这可能会显著地改变答案。这就是为什么您在argc和argv中没有得到任何结果。您知道,在argv中至少会得到程序名吗?
% foo # argc == 1
% foo banana # argc == 2, etc.