Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/cplusplus/152.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C++ 如果我没有在命令提示符中输入ARGC值,它是如何初始化的?_C++_Exit_Argc - Fatal编程技术网

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.