编写简单的C运行库(三)
在编写简单的C运行库(二)中主要实现了对有关文件操作函数的实现,接下来主要实现有关字符串的函数,如itoa,strcmp,strcpy,strlen函数,这些函数并没有用到系统调用,所以也就不用向实现文件操作的函数那样使用内嵌汇编,这些函数的定义都放在string.h中。实现了字符串函数之后,就大概实现了一个小型的c运行库,虽然很简略,但对于理解c库函数运行原理、所用的关键技术有了比较深刻的认识。最后用这个小的c运行库来编译运行一个简单的测试程序,用以测试我们的库能否正常的工作。 字符串函数 字符串函数中主要是实现itoa函数有点难度,其它的都还比较的简单,所以这里主要讲下itoa函数的实现。 12345678910111213141516171819202122232425262728293031323334char *itoa(int n, char *str, int radix){ char digit[] = "0123456789ABCDEFGHIJKLMNOPQRSTUVWXYZ"; char *ptr = str,...
编写简单的C运行库(二)
在前面编写简单的C运行库(一)中主要实现了调用main函数前的初始化、获取参数和环境变量、退出程序等工作。接下来我们真正实现c标准库中的一些函数(主要是文件操作、字符串操作函数)。不过我们对这些函数的实现力争简单,对于效率方面考虑的不是很多,因为目的主要还是学习神秘的库是怎么实现的。 文件操作 c中的标准I/O库都是带有缓存的,我们在这里为了实现的简单,将缓存省略了,直接包装了有关文件操作的系统调用。现在我们直接看文件打开的函数: 12345678910111213static int open(const char *pathname, int flags, int mode){ int ret; __asm__ volatile( "int $0x80" :"=a"(ret) :"0"(5),"b"(pathname),"c"(flags),"d"(mode) ); ...
编写简单的C运行库(一)
...
使用VC和DirectShow从摄像头中读取图像
使用VC和DirectShow从摄像头中读取图像
C++ 复制文件到剪切板
C++ 复制文件到剪切板实现代码
C++ DirectShow 打开多个摄像头
C++ DirectShow 打开多个摄像头
如何在 C++11 中使用 Lambda 表达式
Lambda 表达式不仅具有函数指针的灵活性,还可以通过捕获局部变量提高可扩展性。本文介绍 Lambda 表达式的语法和用法。
C++11新特性整理
C++11新特性整理
C++基础入门知识点整理
C++基础入门知识点整理
C++ 发展历程
C++ 发展历程














