在C中传递给main()的参数数量有限吗?众所周知,它被定义为int main(int argc,char * argv []).
当我调用程序时,我可以传递这样的参数:
$prog.exe arg1 arg2 arg3.....argn
我们可以以这种方式提供给main()的参数数量有上限吗?
解决方法
不,ISO C99标准没有限制.如果你使用“祝福”的主要形式(其中有两个):
int main (int argc,char *argv[]);
那么您将被限制为有符号整数的最大大小(实现依赖,但保证至少为215-1或32,767).
当然,您甚至可以拥有更多的功能,因为该标准特别允许非保佑的主要形式(例如,需要很长时间的计数).
该标准规定了参数的存储方式,像argv [argc]必须为NULL,但不直接限制数量.
当然,在实践中将会有局限性,但这完全取决于实施和环境.但是,如果你要问,那么你可能在做something wrong.
大多数工具会将真正大量的参数放入一个响应文件(如args.txt)中,然后传递一个参数,如:
my_prog @args.txt
它对参数数量和大小有任意限制.