在c代码中,返回主行的行为是否相同?
int main (int argc , char* argv[])
{
exit(2);
}
和
int main (int argc , char* argv[])
{
return 2;
}
当两个代码都从另一个c调用时,它们都将返回2?
答案 0 :(得分:2)
如果使用main()
函数,最后调用exit()
或使用return
语句在主机环境中具有相同的输出,则它们都将执行控制权返回给环境。
但是,如果有任何用户定义的功能:
return
语句只会将控件返回给调用者函数exit()
会将控件返回到主机环境
atexit
函数注册的所有函数tmpfile
函数创建的文件。答案 1 :(得分:0)
main
的行为应类似于在exit()
(exit(main(argc,argv))
)内被调用,
因此来自main的return
应该基本上等同于exit(retval)
,除非返回
从main
起,对main的本地语言的引用将变为无效,而如果您调用exit
,则它们仍然有效:
#include <stdlib.h>
#include <stdio.h>
int *addr;
void print_thru_ptr(void)
{
printf("%d\n", *addr);
}
int main (int argc , char* argv[])
{
int local=42;
addr=&local;
atexit(print_thru_ptr);
if(1){
exit(2); //will print 42
}else{
return 2; //would be undefined
}
}