主函数可以有默认参数值吗?

时间:2014-03-21 06:30:19

标签: c++ arguments main default-value

如何将main函数参数的默认值设置为用户定义函数?

3 个答案:

答案 0 :(得分:5)

嗯,该标准没有说禁止main拥有默认参数,并说你已成功合并编译器以便像这样同意你

#include <iostream>

const char *defaults[] = { "abc", "efg" };

int main(int argc = 2, const char **argv = defaults)
{
    std::cout << argc << std::endl;
}

Live example。它编译时没有错误或警告,仍然没用;徒劳的实验。它几乎总是打印1

每次调用程序时,例如没有参数(或任何数量的参数),argc设置为1和{{1指向程序名称,所以这样做是没有意义的,即这些变量永远不会被触及,因此默认值没有意义,因为默认值永远不会被使用。

因此,通常使用局部变量来实现这样的事情。喜欢这个

argv[0]

答案 1 :(得分:1)

我认为您希望针对以下情况做两件事。

  1. 没有传递参数时
  2. 传递参​​数时。
  3. 这是你如何做到的。

    int main(int argc, char *argv[]) 
    {
        if(argc == 1)
        {
            // case #1
        }
        else
        {
            // case #2
        }
    }
    

答案 2 :(得分:0)

使用argc和argv? Thoses会将参数从命令行传递给您的程序。你不能真正使用默认参数。您必须在调用程序期间传递它们,如下所示:

$> ./my_addition "4" "7"



int main(int argc, char *argv[]) 
{
  // argc <=> 'argument count' (=3)
  // argv <=> 'argument vector' (i.e. argv[1] == "4")
  // argv[0] is usually the bin name, here "my_addition"

  for (int i = 0; i < argc; ++i)
    std::cout << argv[i] << std::endl;
  return (0);
}

也许您可以使用脚本来运行程序,这可能是main()默认参数的最接近的解决方案。

exec_my_prog.sh:

#!/bin/zsh
call_your_program + very_meny_args

调用./exec_my_prog.sh将使用“默认”参数运行程序。