当你不遵循argv和argc的做法会发生什么
可能重复:
main(int argc,char * argv [])
Main's Signature in C ++
如果我写:
int main(int argc, char** argv)
我得到正确的命令行输入。 如果我写的话会发生什么,
int main(int foo, double fooDouble, fooType FooVar)
这是依赖操作系统还是依赖于编译器?
鉴于它编译,它仍然只能用argc和argv参数调用。
所以你的fooDouble将得到argv的指针值,并且FooVar将获得用于该参数位置的寄存器/堆栈空间中的任何值(可能未被被调用者初始化,因此它可能包含任何未定义的值)。
这个代码甚至不需要编译。 如果是这样,可能会发生未定义的行为。
向main
添加第三个(或第四个或第五个...)参数的效果的确取决于操作系统。 例如,在Windows上(我也相信Unix),你可以有第三个参数来授予对环境变量的访问权限:
int main( int argc, char **argv, char **env )
链接地址: http://www.djcxy.com/p/72129.html
上一篇: What happens when you don't follow the practice of argv and argc
下一篇: How could I speed up comparison of std::string against string literals?