当前位置: 首页 > news >正文

毕业设计网站开发的目的和意义1688阿里巴巴官方网站

毕业设计网站开发的目的和意义,1688阿里巴巴官方网站,多少钱需要交个人所得税,深圳网络营销推广渠道当前位置:我的异常网 C语言 一个c程序在执行main函数之前和main之后都做了那些一个c程序在执行main函数之前和main之后都做了那些事情啊该如何解决www.myexceptions.net 网友分享于#xff1a;2013-04-17 浏览#xff1a;19次一个c程序在执行main函数之前和main之后都做了…当前位置:我的异常网» C语言 » 一个c程序在执行main函数之前和main之后都做了那些一个c程序在执行main函数之前和main之后都做了那些事情啊该如何解决www.myexceptions.net  网友分享于2013-04-17  浏览19次一个c程序在执行main函数之前和main之后都做了那些事情啊很想知道一个c程序在执行main函数之前和main之后都做了那些事情请高手指点指点哈~------解决方案--------------------main函数之前--真正的函数执行入口或开始一种解释实际上在可执行文件被加载之后控制权立即交给由编译器插入的Start函数它将对后面这些全局变量进行准备_osver 操作系统的构件编号_winmajor 操作系统的主版本号_winminor 操作系统的次版本号_winver 操作系统完全版本号__argc 命令行参数个数__argv 指向参数字符串的指针数组_environ 指向环境变量字符串的指针数组Start函数初始化堆并调用main函数mian函数返回之后,Start函数调用Exit函数结束该进程启动函数Start的源代码在crt0.c Microsoft Visual Cc0w.asm Borladn C另一种解释Some of the stuff that has to happen before main():set up initial stack pointerinitialize static and global datazero out uninitialized datarun global constructorsSome of this comes with the runtime librarys crt0.o file or its __start() function. Some of it you need to do yourself.Crt0 is a synonym for the C runtime library.Depending on the system youre using the follwing may be incomplete, but it should give you an idea. Using newlib-1.9.0/libgloss/m68k/crt0.S as an outline, the steps are:1. Set stack pointer to value of __STACK if set2. Set the initial value of the frame pointer3. Clear .bss (where all the values that start at zero go)4. Call indirect of hardware_init_hook if set to initialize hardware5. Call indirect of software_init_hook if set to initialize software6. Add __do_global_dtors and __FINI_SECTION__ to the atexit function so destructors and other cleanup functions are called when the program exits by either returning from main, or calling exit7. setup the paramters for argc, argv, argp and call main8. call exit if main returns第三种解释囫囵C语言(三)谁调用了我的 main现在最重要的是要跟得上潮流所以套用比较时髦的话谁动了我的奶酪。谁调用了我的 main不过作为计算机工作者我劝大家还是不要赶时髦今天Java热明天 .net 流行什么时髦就学什么。我的意思是先花几年把基本功学好等你赶时髦的时候也好事半功倍。废话不多说了。我们都听说过一句话“main是C语言的入口”。我至今不明白为什么这么说。就好像如果有人说“挣钱是泡妞”肯定无数砖头拍过来。这句话应该是“挣钱是泡妞的一个条件只不过这个条件特别重要”。那么上面那句话应该是 “main是C语言中一个符号只不过这个符号比较特别。”我们看下面的例子/* file name test00.c */int main(int argc, char* argv){return 0;}编译链接它cc test00.c -o test.exe会生成 test.exe但是我们加上这个选项 -nostdlib (不链接标准库)cc test00.c -nostdlib -o test.exe链接器会报错undefined symbol: __start也就是说1. 编译器缺省是找 __start 符号而不是 main2. __start 这个符号是程序的起始点3. main 是被标准库调用的一个符号再来思考一个问题我们写程序比如一个模块通常要有 initialize 和 de-initialize但是我们写 C 程序的时候为什么有些模块没有这两个过程么呢比如我们程序从 main 开始就可以 mallocfree但是我们在 main 里面却没有初始化堆。再比如在 main 里面可以直接 printf可是我们并没有打开标准输出文件啊。(不知道什么是 stdinstdoutstderr 以及 printf 和 stdout 关系的群众请先看看 C 语言中文件的概念)。有人说这些东西不需要初始化。如果您真得这么想请您不要再往下看了我个人认为计算机软件不适合您。聪明的人民群众会想一定是在 main 之前干了些什么。使这些函数可以直接调用而不用初始化。通常我们会在编译器的环境中找到一个名字类似于 crt0.o 的文件这个文件中包含了我们刚才所说的 __start 符号。(crt 大概是 C Runtime 的缩写请大家帮助确认一下。)那么真正的 crt0.s 是什么样子呢下面我们给出部分伪代码///section .text:__start::init stack;init heap;open stdin;open stdout;open stderr;:push argv;push argc;call _main; (调用 main):destory heap;close stdin;close stdout;close stderr;:call __exit;实际上可能还有很多初始化工作因为都是和操作系统相关的笔者就不一一列出了。注意1. 不同的编译器不一定缺省得符号都是 __start。2. 汇编里面的 _main 就是 C 语言里面的 main是因为汇编器和C编译器对符号的命名有差异(通常是差一个下划线_)。文章评论
http://www.pierceye.com/news/51496/

相关文章:

  • 最便宜网站空间网站建设税收编码
  • php网站开发实例教程作业怎样提高百度推广排名
  • 北京首华建设经营有限公司网站河南百度推广电话
  • 网站seo入门机关事业单位网站备案
  • php开发网站建设灯具公司网站模板
  • 荣耀手机商城官方网站下载快看点号自媒体平台注册
  • 精美驾校企业网站模板极简app制作器
  • 什么网站可以找人做系统汽车集团网站建设
  • 了解网站建设的基本流程杭州网站定制开发哪家好
  • 北京建站公司哪个好去哪个网站做试用好
  • 现在c 做网站用什么软件如何自建外贸网站
  • 校园二手网站开发的意义网站建动态密码是否收费
  • 南通网站制作哪个好网站开发过程的分工
  • 怎么看网站用的什么程序做的wordpress分类目录层级
  • 如何在百度上搜索到自己的网站河北建设网
  • 企业成品网站模板广州有什么好玩的地方是免费的
  • 厦门网站建设一般多少钱中小型网站建设流程
  • 阿里云主机 搭建网站python wordpress采集器
  • 毕业设计做视频网站设计织梦网站app生成器
  • 个人网站建设价格网站开发技术分享ppt
  • 安阳专业网站建设wordpress完全单页
  • 芜湖市建设工程网站维护公告网站宣传的方法
  • 自己做网站卖视频iis网站发布默认首页
  • 网站icon图标怎么加合肥肥东网站建设
  • 网站改中文seo资讯网
  • 网站开发liucheng郑州网站制作专业乐云seo
  • 公众号投票怎么制作文章优化关键词排名
  • 成都便宜做网站的沧州句号网络科技有限公司
  • 阿里巴巴网站分类板块做全屏慈溪做网站的公司
  • 注册企业在哪个网站茂名市城乡和住房建设局网站