如何将main
函数参数的默认值设置为用户定义函数?
答案 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)
我认为您希望针对以下情况做两件事。
这是你如何做到的。
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
将使用“默认”参数运行程序。