程序运行流程?是从main函数开始么?

self_control 2008-08-20 10:30:24
C++程序的运行,是从main开始的么?
如果是,它是直接找到main这个函数?
如果不是,那具体流程是怎么的呢?


#ifdef UNIX

int main(int argc, char *argv[])
{
mainThread(NULL);
return 0;
}

#endif

上面这段代码会产生什么效果?

希望大家讲详细点,学了这么久C++,发现这个问题都没解决,挺郁闷...
看《深入理解C++对象模型》可以解决这个疑问么?

问题挺多,希望大家耐心讲解,谢谢...
...全文
487 30 打赏 收藏 转发到动态 举报
写回复
用AI写文章
30 条回复
切换为时间正序
请发表友善的回复…
发表回复
flyminggege 2008-09-15
  • 打赏
  • 举报
回复
[Quote=引用 18 楼 self_control 的回复:]
没有main函数的例子,有么?
没有main函数的例子,有么?
没有main函数的例子,有么?
没有main函数的例子,有么?
没有main函数的例子,有么?
没有main函数的例子,有么?
没有main函数的例子,有么?
没有main函数的例子,有么?
没有main函数的例子,有么?
没有main函数的例子,有么?
[/Quote]
我只学过c啦,不过在c中是必须要主函数的,都是位置就比较灵活啦,你喜欢放哪里都行,但是程序总是从主函数开始执行的,我想c++也应该差不多吧,不知道这种想法是不是正确的?
dtor 2008-09-03
  • 打赏
  • 举报
回复
深入浅出里头有讲
malone1 2008-08-20
  • 打赏
  • 举报
回复
如果你修改了编译器的默认函数入口,你就可以把main换成任何。
如果你不修改就必须用默认的main做程序入口
hmsuccess 2008-08-20
  • 打赏
  • 举报
回复
[Quote=引用 10 楼 self_control 的回复:]
引用 8 楼 hmsuccess 的回复:
C/C++ code

#ifdef UNIX
int main(int argc, char *argv[])
{
mainThread(NULL);
return 0;
}

#endif


这段代码,当在UNIX环境中,main才被执行


就是说,如果程序不在UNIX环境中,程序将不会被执行?
[/Quote]
#ifdef WIN32
......
#endif

#ifdef UNIX
.....
#endif
ysuliu 2008-08-20
  • 打赏
  • 举报
回复
正常的代码如果你是作为一个Application使用,就必须要有main函数,我也不知道为什么是main函数,而不是entrence或者其他函数,我想也没有必要深究。如果你的代码是作为一个lib使用的话,那就不需要main函数,诸如windows里的dll文件,都是动态链接库,是供别的Application用的,所以就不用main了。

[Quote=引用 20 楼 ysuliu 的回复:]
UNIX不是一个宏嘛,如果不在UNIX下,你硬要定义这个宏,那代码当然也会被执行

引用 10 楼 self_control 的回复:
引用 8 楼 hmsuccess 的回复:
C/C++ code

#ifdef UNIX
int main(int argc, char *argv[])
{
mainThread(NULL);
return 0;
}

#endif


这段代码,当在UNIX环境中,main才被执行


就是说,如果程序不在UNIX环境中,程序将不会被执行?
[/Quote]
malone1 2008-08-20
  • 打赏
  • 举报
回复

ADS的编译器中,C语言写的程序可以没有main()函数。入口地址可以自由设定。
self_control 2008-08-20
  • 打赏
  • 举报
回复
猛然觉得这个问题很烂...
还是等等,看看大家的讨论吧...
下午5点再结贴吧- -!
ysuliu 2008-08-20
  • 打赏
  • 举报
回复
UNIX不是一个宏嘛,如果不在UNIX下,你硬要定义这个宏,那代码当然也会被执行

[Quote=引用 10 楼 self_control 的回复:]
引用 8 楼 hmsuccess 的回复:
C/C++ code

#ifdef UNIX
int main(int argc, char *argv[])
{
mainThread(NULL);
return 0;
}

#endif


这段代码,当在UNIX环境中,main才被执行


就是说,如果程序不在UNIX环境中,程序将不会被执行?
[/Quote]
malone1 2008-08-20
  • 打赏
  • 举报
回复
main()函数是编译器默认的程序入口,修改编译器选项应该可以改变入口函数名字。自己找找看吧。
应该可以。
self_control 2008-08-20
  • 打赏
  • 举报
回复
没有main函数的例子,有么?
没有main函数的例子,有么?
没有main函数的例子,有么?
没有main函数的例子,有么?
没有main函数的例子,有么?
没有main函数的例子,有么?
没有main函数的例子,有么?
没有main函数的例子,有么?
没有main函数的例子,有么?
没有main函数的例子,有么?
malone1 2008-08-20
  • 打赏
  • 举报
回复
linux中可以执行,UNIX也可以执行吧
wangdeqie 2008-08-20
  • 打赏
  • 举报
回复
C++程序的运行,是从main开始的么?
如果是,它是直接找到main这个函数?
如果不是,那具体流程是怎么的呢?
---------------------------------------------------
其实很简单!设几个断点,Debug跟踪下,看先执行哪个,就知道了
malone1 2008-08-20
  • 打赏
  • 举报
回复
是先创建主线程来执行main()函数,而不是在main函数里才创建主线程
self_control 2008-08-20
  • 打赏
  • 举报
回复
会不会有没有main函数的例子?
xianyuxiaoqiang 2008-08-20
  • 打赏
  • 举报
回复
简单理解:C++从main函数进入,开始整个程序.
self_control 2008-08-20
  • 打赏
  • 举报
回复
[Quote=引用 9 楼 hqin6 的回复:]
晕的乎~~这个问题,我还重来没想过,老师这么教,我这么用,一直就是这样!

突然想起来一句话:

妈妈这个词大家都会说,可是有谁真正懂得这个词的含义呢?
---一个电视剧里的台词!
[/Quote]

水。。。。。。。。。。。。。。。。。。平&%……¥%¥%……¥%¥#@#¥
coverallwangp 2008-08-20
  • 打赏
  • 举报
回复
[Quote=引用 4 楼 akirya 的回复:]
先是crt入口函数,然后是全局变量初始化(构造函数什么的),然后才是main函数
[/Quote]

self_control 2008-08-20
  • 打赏
  • 举报
回复
[Quote=引用 8 楼 hmsuccess 的回复:]
C/C++ code

#ifdef UNIX
int main(int argc, char *argv[])
{
mainThread(NULL);
return 0;
}

#endif



这段代码,当在UNIX环境中,main才被执行
[/Quote]

就是说,如果程序不在UNIX环境中,程序将不会被执行?
太乙 2008-08-20
  • 打赏
  • 举报
回复
晕的乎~~这个问题,我还重来没想过,老师这么教,我这么用,一直就是这样!

突然想起来一句话:

妈妈这个词大家都会说,可是有谁真正懂得这个词的含义呢?
---一个电视剧里的台词!

hmsuccess 2008-08-20
  • 打赏
  • 举报
回复


#ifdef UNIX
int main(int argc, char *argv[])
{
mainThread(NULL);
return 0;
}

#endif

这段代码,当在UNIX环境中,main才被执行
加载更多回复(10)

64,687

社区成员

发帖
与我相关
我的任务
社区描述
C++ 语言相关问题讨论,技术干货分享,前沿动态等
c++ 技术论坛(原bbs)
社区管理员
  • C++ 语言社区
  • encoderlee
  • paschen
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
  1. 请不要发布与C++技术无关的贴子
  2. 请不要发布与技术无关的招聘、广告的帖子
  3. 请尽可能的描述清楚你的问题,如果涉及到代码请尽可能的格式化一下

试试用AI创作助手写篇文章吧