当你不遵循argv和argc的做法时会发生什么

Tim*_*Tim 8 c c++ command-line command-line-arguments

可能的重复:
main(int argc,char*argv [])
Main的C签名

如果我写:

int main(int argc, char** argv)
Run Code Online (Sandbox Code Playgroud)

我得到适当的命令行输入.如果我写的话怎么会说,

int main(int foo, double fooDouble, fooType FooVar)
Run Code Online (Sandbox Code Playgroud)

这是依赖于操作系统还是依赖于编译器?

Kao*_*aos 6

鉴于它确实编译,它仍然只能使用argc和argv参数调用.

所以你的fooDouble将获得argv的指针值,而FooVar将获得用于该参数位置的寄存器/堆栈空间中的任何值(可能没有被被调用者初始化,因此它可能包含任何未定义的值).


Thi*_*ter 5

这段代码甚至不需要编译.如果是,则可能发生未定义的行为.

  • @ 0A0D:不,它不是真的.我最常用的是我的应用程序.但是,它定义了一个静态库(windows上的qmain.lib),它可以规范事物(我认为这是特定于Windows的WinMain()的一种解决方法.) (4认同)

Fre*_*abe 5

添加第三个(或第四个或第五个......)参数的效果main确实取决于操作系统.例如,在Windows上(我也相信Unix)你可以有第三个参数来授予对环境变量的访问权限:

int main( int argc, char **argv, char **env )
Run Code Online (Sandbox Code Playgroud)


归档时间:

查看次数:

941 次

最近记录:

14 年,5 月 前