社区
C语言
帖子详情
main函数能调用吗?
pjie131
2005-07-29 11:23:00
在应用中,我曾经把main函数当做普通的函数调用,用来做异常的恢复,
但是不知道这样做有什么危险没有,我指的是堆栈等一些C下面看不到的东西,
调用main的时候,堆栈会有什么动作呢?
大虾指点一下!~~~
多谢~~
...全文
1598
43
打赏
收藏
main函数能调用吗?
在应用中,我曾经把main函数当做普通的函数调用,用来做异常的恢复, 但是不知道这样做有什么危险没有,我指的是堆栈等一些C下面看不到的东西, 调用main的时候,堆栈会有什么动作呢? 大虾指点一下!~~~ 多谢~~
复制链接
扫一扫
分享
转发到动态
举报
写回复
配置赞助广告
用AI写文章
43 条
回复
切换为时间正序
请发表友善的回复…
发表回复
打赏红包
晨星
2005-08-03
打赏
举报
回复
算了,争论也没什么好处,写个简单的例子不就明白了么?
#include <iostream>
using namespace std;
int count = 10;
void f();
int main( void )
{
cout << count-- << endl;
if(count > 0)
f();
}
void f()
{
main();
}
就是这样,有什么不可以的?main唯一的特别之处就在于系统刚开始运行它就被自动调用,别的函数没有这个特权而已。
其实,只要你有兴趣研究,一个函数的入口也未必非要是main,叫f,叫g都可以,只要提供相应参数给编译器指定具体的入口就可以了。只是如果你不采用编译器默认的入口(main)的话,那么一切程序的初始化动作,比如初始堆栈的分配,I/O初始化都得你自己手工进行了。
微软就是这样做的,它们强行把Win32程序的入口规定成WinMain,所以,在一个Win32程序中,如果你有一个函数叫“main”,那它只不过是个普通的函数而已,因为VC把Win32程序的入口换成了另一个不符合C++标准的名字了。
注意,微软并不是在编译器里做了手脚,因为即使你把VC的cl换成Intel的C++ Compiler,Win32程序也照样可以成功编译运行。他们只是指定了不同的程序入口。
zidane_yubo
2005-08-02
打赏
举报
回复
main函数可以被调用,注意让main函数可以返回
zidane_yubo
2005-08-02
打赏
举报
回复
c专家编程 里面提到了main可以被调用的,但是情况特殊啊
tb01412
2005-08-02
打赏
举报
回复
所谓main函数与其它函数的不同在于,它是程序的入口,就是在编译器链接的时候把它作为最开始的一部分,当然在调用它之前还要做很多其它压栈方面的工作,然后在它之后有可能会调用一些子函数,如果在其它地方再调用main函数,就会进行递归,如果没有显示指出递归退出条件,岂不是要进入死循环?
naturemickey
2005-08-02
打赏
举报
回复
这是绝对可以的,ICOOO的一大特点就是:main函数递归 + 条件语句嵌套 + 乱七八槽的宏定义字符串连接 + ……
dashang
2005-08-01
打赏
举报
回复
我没有用过,学习!
imi00
2005-07-31
打赏
举报
回复
编译通过,并可以正常运行结束
johnzhaobing
2005-07-31
打赏
举报
回复
可以的 在c和指针 这本书中,就引用了一个例子,具体可看25页
atgjplh
2005-07-31
打赏
举报
回复
不可以,能编译通过不一定就说可以!
xjp6688
2005-07-31
打赏
举报
回复
可以,但是有些编译器不允许递归调用!
iohui
2005-07-30
打赏
举报
回复
main函数只能调用其他函数,却不能其他任何函数调用,因为这样会使程序死循环。
cccclb
2005-07-30
打赏
举报
回复
当然
Jagen在路上
2005-07-30
打赏
举报
回复
没有问题,这是一种第归调用,注意要有返回条件。
dudongxiao
2005-07-30
打赏
举报
回复
更正一下:
#include <iostream>
using namespace std;
int count = 2;
int main()
{
if (count > 0)
{
cout << "main函数调用成功!" << endl;
count--;
main();
}
return 0;
}
dudongxiao
2005-07-30
打赏
举报
回复
#include <iostream>
using namespace std;
int count = 2;
void main()
{
if (count > 0)
{
cout << "main函数调用成功!" << endl;
count--;
main();
}
return 0;
}
试过了,可以的!
Wolf0403
2005-07-30
打赏
举报
回复
如果你的 restart 的动作是结束当前执行并且从头开始重新执行程序,那么这样递归调用不是一个很好的办法。
晨星
2005-07-30
打赏
举报
回复
哦,说错了,不是死循环,是无穷递归。
晨星
2005-07-30
打赏
举报
回复
当然可以。
如果是exe程序,防止形成死循环就行了。
guoshanhe
2005-07-30
打赏
举报
回复
我觉得可以。
main()函数也和其他函数一样,只不过最初由操作系统调用,而main()函数再调用其他函数,除了这外,其他特点应该和一般函数一样。
adsfdda
2005-07-30
打赏
举报
回复
main函数的定义是这样的:
int main( int argc[ , char *argv[ ] [, char *envp[ ] ] ] );
加载更多回复(23)
Linux0.11内核
main
函数
那些事
本课程介绍Linux0.11版本内核如何人工设置第一个任务(task 0)以及任务0从内核态切换到用户态的详细过程。包括全局描述符表中的TSS0描述符和LDT0描述符的创建过程。与引导过程中全局描述符表及局部描述符表的创建过程...
两个
函数
可以相互
调用
吗?
main
函数
能被自己
调用
吗?
main
函数
能被别的普通
函数
调用
吗?
main
函数
能被别的普通
函数
调用
吗? 现在写代码来玩一下啊: #include #include void fun2(); void fun1() { printf("fun1\n"); Sleep(1000); fun2(); } void fun2() { printf("fun2\n");
c语言都是只执行
main
吗,互联网常识:c语言程序总是从
main
函数
开始执行吗?
跟大家讲解下有关c语言程序总是从
main
函数
开始执行吗?,相信小伙伴们对这个话题应该也很关注吧,现在就为小伙伴们说说c语言...在
main
函数
中可以
调用
程序中的其他
函数
而其他
函数
却不可以
调用
main
函数
;程序最后再...
如何在
main
函数
之前
调用
其他
函数
?
在windows平台中,执行
main
函数
之前,系统会执行一段CRTstartup代码,对系统的堆栈、全局变量、命令行参数、环境变量等进行初始化操作。我们利用对全局变量的初始化机制来让构造
函数
中的代码优先在
main
函数
之前执行...
C语言
69,371
社区成员
243,080
社区内容
发帖
与我相关
我的任务
C语言
C语言相关问题讨论
复制链接
扫一扫
分享
社区描述
C语言相关问题讨论
社区管理员
加入社区
获取链接或二维码
近7日
近30日
至今
加载中
查看更多榜单
社区公告
暂无公告
试试用AI创作助手写篇文章吧
+ 用AI写文章