易截截图软件、单文件、免安装、纯绿色、仅160KB

C运行时库(解析mainCRTStartup)

1.概论
  运行时库是程序在运行时所需要的库文件,通常运行时库是以LIB或DLL形式提供的。C运行时库诞生于20世纪70年代,当时的程序世界还很单纯,应用程序都是单线程的,多任务或多线程机制在此时还属于新观念。所以这个j时期的C运行时库都是单线程的。
  随着操作系统多线程技术的发展,最初的C运行时库无法满足程序的需求,出现了严重的问题。C运行时库使用了多个全局变量(例如errno)和静态变量,这可能在多线程程序中引起冲突。假设两个线程都同时设置errno,其结果是后设置的errno会将先前的覆盖,用户得不到正确的错误信息。
  因此,Visual C++提供了两种版本的C运行时库。一个版本供单线程应用程序调用,另一个版本供多线程应用程序调用。多线程运行时库与单线程运行时库有两个重大差别:
  (1)类似errno的全局变量,每个线程单独设置一个;
  这样从每个线程中可以获取正确的错误信息。
  (2)多线程库中的数据结构以同步机制加以保护。
  这样可以避免访问时候的冲突。
  Visual C++提供的多线程运行时库又分为静态链接库和动态链接库两类,而每一类运行时库又可再分为debug版和release版,因此Visual C++共提供了6个运行时库。如下表:
C运行时库 库文件
Single thread(static link)  libc.lib
Debug single thread(static link)  libcd.lib
MultiThread(static link)  libcmt.lib
Debug multiThread(static link) libcmtd.lib
MultiThread(dynamic link) msvert.lib
Debug multiThread(dynamic link) msvertd.lib 
void mainCRTStartup(void)
{
 int mainret;
 /*获得WIN32完整的版本信息*/
 _osver = GetVersion();
 _winminor = (_osver >> 8) & 0x00FF ;
 _winmajor = _osver & 0x00FF ;
 _winver = (_winmajor << 8) + _winminor;
 _osver = (_osver >> 16) & 0x00FFFF ;
 _ioinit(); /* initialize lowio */
 /* 获得命令行信息 */
 _acmdln = (char *) GetCommandLineA();
 /* 获得环境信息 */
 _aenvptr = (char *) __crtGetEnvironmentStringsA();
 _setargv(); /* 设置命令行参数 */
 _setenvp(); /* 设置环境参数 */
 _cinit(); /* C数据初始化:全局变量初始化,就在这里!*/
 __initenv = _environ;
 mainret = main( __argc, __argv, _environ ); /*调用main函数*/
 exit( mainret );


相关文档:

s3c2440基于linux的button和led字符设备驱动

先是内核驱动程序:
#include <linux/module.h>//具体的头文件位置为/opt/FriendlyARM/mini2440/linux-2.6.29/include/linux/*.h
#include <linux/kernel.h>
#include <linux/fs.h>
#include <linux/init.h>
#include <linux/delay.h>
#include <linux/poll.h>
#include <l ......

c/c++类型

1.分类
 内部类型 和用户定义类型
2.
 整形:bool ,字符型,整形
   true  1                   flase 0
   非零 true              & ......

两个矩阵相乘并输出的C程序

[root@ocsser file]# cat array-05.c
//this is a program for two juzheng xiangcheng.
#include <stdio.h>
int main(){
        int i,j,m,n;
        int g,k,f;
        int c[5][6];
 & ......

链表综合操作C版实现程序

决定找时间把数据结构复习下,从链表开始吧。这一知识点虽说并不涉及复杂的算法,不需要费尽头脑去思考来龙去脉,但是要写出完整的程序来,还是要花一些时间的。特别是如果对指针操作不够熟练,极易出错。好久没用C写程序了……
完整代码:
/*
* 单链表基本操作C版实现程序
* 包括插入、删除、查找。
*
* ......

LINUX C 时间操作

  1.时间表示
    在程序当中,我们经常要输出系统当前的时间,比如我们使用date命令的输出结果.这个时候我们可以使用下面两个函数:
#include <sys/time.h>
time_t time(time_t *tloc);
char *ctime(const time_t *clock);
    time函数返回从1970年1月1日0 ......
© 2009 ej38.com All Rights Reserved. 关于E健网联系我们 | 站点地图 | 赣ICP备09004571号