摘要: 在该文开始之前,在chianunix推荐一篇有关Makefile的论坛文章“跟我一起写Makefile”:http://www.chinaunix.net/old_jh/23/408225.html在csdn见陈浩专栏:http://blog.csdn.net/haoel/article/details/2886#comments而本文主要关注如何有效的编写一个实用的Makefile,达到在短时间内可以利用Makefile进行编程的目的,所以会略去很多详细的细节,对此有疑问的可以参照上文链接进行阅读。本文分两块来阐述,一是makefile和源文件在同一目录下,二是makefile和源文件不在同 阅读全文
posted @ 2012-11-22 19:38 Loylin 阅读(6649) 评论(3) 推荐(4) 编辑
摘要: 在前面一文中,可以看到,处理消息的窗口函数是一个switch-case结构,当然这不是处理多分支程序的唯一结构。下面将会给出一种更模块化的结构。首先,为了使Windows SDK程序结构更清晰,利用C函数把程序模块化,对Windows程序进行封装。程序代码可按如下设计:#include<windows.h>//定义全局变量--------------------------------------------------------------------------------HINSTANCE hInst; HWND hWnd; M... 阅读全文
posted @ 2012-10-22 21:55 Loylin 阅读(1201) 评论(0) 推荐(0) 编辑
摘要: 首先,如果编写一个windows应用程序,最直接的方法是使用MFC,因为MFC已经为我们处理了很多繁杂的过程,若不采用MFC,则通常的做法是调用windows API函数实现。如经过以下步骤,可以创建一个简单的窗口。注册窗口 HWND h_Wnd; //保存创建窗口的句柄 WNDCLASS w_Class; MSG msg; //用以消息循环的MSG结构体 w_Class.cbClsExtra = 0; w_Class.cbWndExtra = 0; w_Class.hbrBackground = (HBRUSH)GetStockObject(WHITE... 阅读全文
posted @ 2012-10-10 19:10 Loylin 阅读(903) 评论(0) 推荐(0) 编辑
摘要: 迭代器除了在STL中遍历序列对象外,还有其他更多的迭代器被iterator所定义。iterator头文件定义迭代器的几个模板将数据从源传到目的地。流迭代器(stream iterator)作为指向输入或输出流的指针,它们可以用来在流和任何使用迭代器的源或目的地之间传输数据,如算法。插入迭代器(inserter iterator)可以将数据传输给一个基本的序列容器。Iterator头文件定义了两个流迭代器模板,其中istream_iterator<T>用于输入流,ostream_iterator<T>用于输出流,T是要从流中提取的或者写入流中的对象类型。头文件还定义了三个 阅读全文
posted @ 2012-08-28 19:31 Loylin 阅读(13210) 评论(0) 推荐(1) 编辑
摘要: lambda表达式C++ 语言中的lambda表达式在很多情况下提供了函数对象的另一种实现机制。Lambda表达式并不是STL所特有的,但它广泛应用于这一环境中。Lambda是表达式是定义一个没有名称、也不需要显示类定义的函数对象。Lambda表达式一般作为一种手段,用来将函数作为实参传递到另一个函数。相比于定义和创建一个常规的函数对象而言,lambda表达式非常容易使用和理解,而且需要的代码也较少。当然,一般而言,lambda表达式并不会取代函数对象。举个例子,假设有个包含数值的矢量,我们计算此矢量的立方值。可以用transform()函数操作,简单的用lambda表达式完成。double 阅读全文
posted @ 2012-08-23 19:48 Loylin 阅读(9445) 评论(2) 推荐(1) 编辑
摘要: 概述函数对象是重载()运算符的类类型对象,即该类实现operator()()函数。STL将一组标准的函数对象定义为模板,,可以使用它们来创建一个函数对象,其中overload()运算符函数使用我们的对象类型。如:STL定义模板less<T>。如果将该模板实例化为less<myNumber>,我们就有了一个函数对象类型,实现operator()()来对myNumber类型的对象进行大小比较。很多算法使用函数对象来指定要进行的二元运算,或者指定谓词来确定进行特定运算。谓词是一个返回bool类型的值的函数,因为函数对象是一种类型的对象,实现operator()()成员函数并返 阅读全文
posted @ 2012-08-23 12:47 Loylin 阅读(8558) 评论(1) 推荐(2) 编辑
摘要: 一台机器上可能不只有一个网卡,但每一个网卡只有一个MAC地址,而每一个网卡可能配置有多个IP地址;如平常的笔记本电脑中,就会有无线网卡和有线网卡(网线接口)两种;因此,如果要获得本机所有网卡的IP和MAC地址信息,则必须顺序获得每个网卡,再依次获取其信息等;在windows sdk中,用IP_ADAPTER_INFO结构体存储网卡信息,包括网卡名、网卡描述、网卡MAC地址、网卡IP等,该结构体的主要描述如下所示:typedef struct _IP_ADAPTER_INFO { struct _IP_ADAPTER_INFO* Next;//指向链表中下一个适配器信息的指针 DWORD C.. 阅读全文
posted @ 2012-08-04 13:23 Loylin 阅读(65962) 评论(12) 推荐(1) 编辑
摘要: 在C++发明阶段,C++之父Stroustrup和贝尔实验室的C++小组对原先的宏方法进行了修订,对其进行了简化并将它从预处理范围移入了编译器。这种新的代码替换装置被称为模板,而且它变现了完全不同的代码重用方法:模板对源代码重用,而不是通过继承和组合重用对象代码。当用户使用模板时,参数由编译器来替换,这非常像原来的宏方法,却更清晰,更容易使用。模板使类和函数可在编译时定义所需处理和返回的数据类型,一个模板并非一个实实在在的类或函数,仅仅是一个类和函数的描述。由于模板可以实现逻辑相同、数据类型不同的程序代码复制,所以使用模板机制可以减轻编程和维护的工作量和难度。模板一般分为模板函数和类模板。以所 阅读全文
posted @ 2012-08-01 22:49 Loylin 阅读(5886) 评论(4) 推荐(4) 编辑
摘要: 大家都知道,在“我的电脑”里有数也数不清的INF文件,但是却很少有人知道,INF文件是干什么用的。充其量,也仅仅停留在INF文件能够解开锁定的注册表这一感性的认识上,那么到底什么是INF文件,INF文件又能干些什么呢?今天让我们一起走进INF文件这一神秘的世界。 揭开INF文件的神秘面纱 INF是Device INFormationFile的英文缩写,是Microsoft公司为硬件设备制造商发布其驱动程序推出的一种文件格式,INF文件中包含硬件设备的信息或脚本以控制硬件操作。在INF文件中指明了硬件驱动该如何安装到系统中,源文件在哪里、安装到哪一个文件夹中、怎样在注册表中加入自身相关信息等.. 阅读全文
posted @ 2012-07-12 10:22 Loylin 阅读(4297) 评论(1) 推荐(0) 编辑
摘要: 介绍 Socket编程让你沮丧吗?从man pages中很难得到有用的信息吗?你想跟上时代去编Internet相关的程序,但是为你在调用 connect() 前的bind() 的结构而不知所措?等等…好在我已经将这些事完成了,我将和所有人共享我的知识了。如果你了解 C 语言并想穿过网络编程的沼泽,那么你来对地方了。读者对象 这个文档是一个指南,而不是参考书。如果你刚开始 socket 编程并想找一本入门书,那么你是我的读者。但这不是一本完全的 socket 编程书。平台和编译器 这篇文档中的大多数代码都在 Linux 平台PC 上用 GNU 的 gcc 成功编译过。而且它们在 HPUX平台 上 阅读全文
posted @ 2012-07-09 17:17 Loylin 阅读(34506) 评论(6) 推荐(19) 编辑