繁体   English   中英

为什么我的C ++ main()不使用我的参数

[英]why my C++ main() doesn't take my parameters

我有一个在Fedora 20中运行的C ++程序。通过main()启动它时,它可以不带任何参数或只有一个参数。 现在,我需要更多参数,但是不知何故,它拒绝采用新参数。

这是我的开始方式:

$ ./runtest.sh ire 22 33

这是main()中的第一行cout:

UICommTest正在启动... argc = 2

我期望argc = 4。

这是我的main():

int main(int argc, char*argv[])
{

    std::cout << "UICommTest is starting ... argc="<< argc << std::endl;

    if(argc == 1)
    {
        UICommTest::startTest(false);
    }
    else if(argc == 2)
    {
        if(string(argv[1]) == "true")
        {
            UICommTest::startTest(true);
        }
        else if(string(argv[1]) == "ire")
        {
            UICommTest::startTestIRE("-1", "-1");
        }
        else
        {
            std::cout << "Usage:: ..." << std::endl;
        }
    }
    else if(argc == 4)
    {
        if(string(argv[1]) == "ire")
        {
            UICommTest::startTestIRE(argv[2], argv[3]);
        }
        else
        {
            std::cout << "Usage:: ..." << std::endl;
        }
    }
    else
    {
        std::cout << "Usage:: ..." << std::endl;
    }

    return EXIT_SUCCESS;
}

我做几次清洁。 而且我敢肯定,新变化已经到来。有人可以提供帮助吗?

因此,您似乎拥有一个shell脚本runtest.sh 在其中,您可能会有这样的一行(path可能比./更长):

./UICommTest "$1" "$2"

显然,这只会为您的程序提供2个参数。 将该行更改为此:

./UICommTest "$@"

注意:使用"$@"是重要的细节,它具有特殊的功能,它可以扩展为等效于"$1" "$2" "$3" ... 引号很重要,因此,如果您传递带空格的参数,则该参数仍将保留为一个参数。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM