C Runtime Library(MSVCRT)来历

msvcrt.dll (名称:Microsoft C Runtime Library)提供了printf,malloc,strcpy等C语言库函数,并且为使用C/C++(Vc)编绎的程序提供了初始化(如获取命令行参数)以及退出等功能.

C Runtime Library 的来历, API, STL, MFC, ATL关系

刚接触Windows开发时,为了快速入门查了不少资料,没想到看的越多,脑袋越糊涂。因为写同一种功能的程序,找到的例程风格截然不同。拿C程序来说,有些API的名称都很长,都是没见过的变量类型而且全大写;有些跟熟悉的Linux环境C开发差不多,标准短小的C函数名。再比如某些C++程序,用的标准类也会有不同。后来专门花了点功夫,才了解Windows平台下的开发有多个不同的体系:标准C,Windows API,MFC,STL。这些都是预先编写好的库,实际开发时选哪个,取决于项目的规模和性质、程序的风格,还有个人的喜好。

继续阅读

Glibc辅助运行库 (C RunTime Library): crt0.o,crt1.o,crti.o crtn.o,crtbegin.o crtend.o

crt1.o, crti.o, crtbegin.o, crtend.o, crtn.o 等目标文件和daemon.o(由我们自己的C程序文件产生)链接成一个执行文件。前面这5个目标文件的作用分别是启动、初始化、构造、析构和结束,它们 通常会被自动链接到应用程序中。例如,应用程序的main()函数就是通过这些文件来调用的。如果不进行标准的链接的话(编译选项-nostdlib), 我们就必须指明这些必要的目标文件,如果未指定,链接器就会提示找不到_start符号,并因此导致链接失败。且,将目标文件提供给编译器的次序也很重 要,因为GNU链接器(编译器会自动调用该链接器进行目标文件的链接)只是个单次处理链接器。

继续阅读

Linux 下 的 cc 和 gcc

在Linux下一会看到cc,另一会又看到gcc,感觉又点混乱的样子。它们是同一个东西么,有啥区别呢

一分为二地看:

首先,如果讨论范围在Unix和Linux之间,那么cc和gcc不是同一个东西。cc来自于Unix的c语言编译器,是 c compiler 的缩写。gcc来自Linux世界,是GNU compiler collection 的缩写,注意这是一个编译器集合,不仅仅是c或c++。

继续阅读

PHP多线程(pthreads)自动加载BUG

OS: win7 64
PHP: 5.4.25 ts
pthreads: 0.1.0

线程的run方法可以继承主线程的常量,函数定义。ini_set()和自动加载不能继承。
具体什么能继承什么不能继承没找到相关文档,只能自己摸索。

继承过来的函数中只能进行一些基本操作,如果试图new一个对象(比如PDO)然后返回这个对象就会导致进程意外终止。

就目前来说基本不能用于生产环境。