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

C Runtime Library详解

.概论
  运行时库是程序在运行时所需要的库文件,通常运行时库是以LIB或DLL形式提供的。
    C运行时库诞生于20世纪70年代,当时的程序世界还很单纯,应用程序都是单线程的,多任务或多线程机制在此时还属于新观念。所以这个时期的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
  
2.C运行时库的作用
  C运行时库除了给我们提供必要的库函数调用(如memcpy、printf、malloc等)之外,它提供的另一个最重要的功能是为应用程序添加启动函数。
  C运行时库启动函数的主要功能为进行程序的初始化,对全局变量进行赋初值,加载用户程序的入口函数。
  不采用宽字符集的控制台程序的入口点为mainCRTStartup(void)


相关文档:

C/C++与Java函数重载区别!

#include <iostream>
using namespace std;
class Base {
public:
virtual void fn(int x) {
cout << "In Base class, int x = " << x << endl;
}
};
class SubClass : public Base {
public:
// 函数的重载,这样的重载方式,在Java中能行,在C/C++中却不行
virt ......

c sharp 无法调用dll

原来是被调用的dll又调用了其他的dll
第二个dll忘记了考到工作目录下
导致了c sharp一直没能加载dll。报错:找不到dll
现在想起来,所谓的dll找不到,应该是找不到第二个dll
消耗时间2个小时,心情稍微有点受影响 ......

好神奇的 extern "C" 哦。。。

有关 extern "C"

搞过C和C++混编的同志们都知道这个啥意思。
这儿有讲:http://www.cppblog.com/Macaulish/archive/2008/06/17/53689.html

但看一下下面的这个代码:

#include <iostream>
using namespace
std;

extern "C" { int g_inta; }

int main (void)
{
g_ ......

使用NDK开发C/C++项目规则(ZT)

使用NDK开发C/C++项目规则
<!-- /* Font Definitions */ @font-face {font-family:宋体; panose-1:2 1 6 0 3 1 1 1 1 1; mso-font-alt:SimSun; mso-font-charset:134; mso-generic-font-family:auto; mso-font-pitch:variable; mso-font-signature:3 135135232 16 0 262145 0;}@font-face {font-family:"\@宋体&qu ......
© 2009 ej38.com All Rights Reserved. 关于E健网联系我们 | 站点地图 | 赣ICP备09004571号