如果我不在命令提示符中输入 ARGC 值,它是如何初始化的?

How is the ARGC value initialized if I don't enter it in the command prompt?

当我运行下面的代码:

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。那么

% foo # argc == 1
% foo banana # argc == 2, etc.

您似乎没有给出任何命令行参数,这就是为什么您在 argc 和 argv 中什么也得不到的原因。

好吧,您可以提供任意数量的命令行参数。如果您使用的是 Visual Studio,请转到项目属性 -> 调试。在那里你可以看到一个盒子"Command line arguments"想给多少就给多少