随笔分类 -  C/C++

摘要:在SDK中,可以用DWORD timeGetTime(VOID)函数获取系统时间,其返回值是毫秒单位的。可以用其实现延时功能的函数。void Delay(DWORD delayTime){DWORD delayTimeBegin;DWORD delayTimeEnd;delayTimeBegin=timeGetTime();do { delayTimeEnd=timeGetTime()... 阅读全文
posted @ 2012-11-08 11:52 拿枪的程序员 阅读(15470) 评论(0) 推荐(0)
摘要:本文讨论static_cast<> 和 reinterpret_cast<>。 reinterpret_cast可以转换任意一个32bit整数,包括所有的指针和整数。可以把任何整数转成指针,也可以把任何指针转成整数,以及把指针转化为任意类型的指针,威力最为强大!但不能将非32bit的实例转成指针。总之,只要是32bit的东东,怎么转都行! static_cast和dynamic_cast可以执行... 阅读全文
posted @ 2012-11-06 12:00 拿枪的程序员 阅读(294) 评论(0) 推荐(0)
摘要:转载于:http://www.cnblogs.com/charley_yang/archive/2010/12/08/1900715.html1.从功能性的角度来讲,<iostream>包含了一系列模板化的I/O类,相反地<iostream.h>只仅仅是支持字符流。另外,输入输出流的C++标准规范接口在一些微妙的细节上都已改进,因此,<iostream>和<iostream.h>在接口和执行上都是不同的。最后,<iostream>的各组成都是以STL(Standard Template Library,标准模板库)的形式声明的,然而& 阅读全文
posted @ 2012-09-24 16:49 拿枪的程序员 阅读(204) 评论(0) 推荐(0)
摘要:转自:http://www.cnblogs.com/uniqueliu/archive/2011/09/24/2189545.html=================this指针的由来====================一个学生可以有多本书一样,而这些书都是属于这个同学的;同理,如果有很多个同学在一起,那么为了确定他们的书不要拿混淆了,最好的办法我想应该就是每个同学都在自己的书上写上名字,这样肯定就不会拿错了。同理,一个对象的多个成员就可看作是这个对象所拥有的书;而在很多个对象中间,我们为了证明某个成员是自己的成员,而不是其他对象的成员,我们同样需要给这些成员取上名字。在C++中,我们利 阅读全文
posted @ 2012-09-17 17:29 拿枪的程序员 阅读(161) 评论(0) 推荐(0)
摘要:结构化异常处理 英文是SEH。但这个词条似乎被占用了。所以我只能用这个词条了。 SEH是WINDOWS系统中处理计算机异常行为的一种方式,这种方式的特点就是用入栈的方式把断点保存起来,所以他的效率很高,往往能够处理很多的异常状态。 Microsoft c/c++编译程序的一种功能扩充,它的最大好处就是它对C和C++都适用;但是它不是一种ANSI标准,因此,与使用ANSI异常处理的程序相比,使用结构化异常处理的程序的可移植性要差一些 C/C++语言中,软件工作人员往往用一句try语句对之后的语句进行保护起来,达到使程序稳定运行的目的。 而在现代软件的编制过程中,错误处理占到很大的一个比... 阅读全文
posted @ 2012-08-02 11:29 拿枪的程序员 阅读(386) 评论(0) 推荐(0)
摘要:Critical Section: 不论是硬件临界资源,还是软件临界资源,多个线程必须互斥地对它进行访问。每个线程中访问临界资源的那段代码称为临界区(Critical Section)。 每个线程中访问临界资源的那段程序称为临界区(Critical Section)(临界资源是一次仅允许一个线程使用的共享资源)。每次只准许一个线程进入临界区,进入后不允许其他线程进入。不论是硬件临界资源,还是软件临界资源,多个线程必须互斥地对它进行访问。 多个线程中涉及到同一个临界资源的临界区称为相关临界区。 线程进入临界区的调度原则是: ①如果有若干线程要求进入空闲的临界区,一次仅允许一个线程进入。②... 阅读全文
posted @ 2012-08-02 11:24 拿枪的程序员 阅读(310) 评论(0) 推荐(0)
摘要:转自百度百科http://baike.baidu.com/view/5592940.htm。说明 Windows API使用了很多Windows自己定义的数据类型。要熟练使用Windows API必须要熟悉Windows数据类型。这些数据类型是Windows特有的。在SDK的相关头文件中有定义。 Windows数据类型都是从标准C的数据类型经过类型重定义而来。INT数据类型是有符号整型,DWORD数据类型是无符号整型。Windows常见数据类型 为什么说是常见数据类型而不是全部呢?因为第一,Windows数据类型太多了,比如说Windows中有很多对象,每一个对象就对应一个句柄,另外还有... 阅读全文
posted @ 2012-08-02 11:21 拿枪的程序员 阅读(179) 评论(0) 推荐(0)
摘要:关于文件的全部属性信息。总计有以下以下9种:文件的标题名、文件的属性(只读、存档,隐藏等)、文件的创建时间、文件的最后访问时间、文件的最后修改时间、文件大小的高位双字、文件大小的低位双字、保留、保留。在这里只有文件标题名和文件的长度可以通过CFile类比较方便的获得,而对于其他几种属性的获取和设置就无能为力了。 在用findfirst()和findnext()函数去查找磁盘文件时经常使用的一个数据结构WIN32_FIND_DATA的成员变量里包含了以上所有的文件属性,因此可以通过这个结构作为获取和更改文件属性的手段。该结构的内容如下: typedef struct _WIN32_FIND_D. 阅读全文
posted @ 2012-08-01 15:58 拿枪的程序员 阅读(252) 评论(0) 推荐(0)
摘要:转载于http://blog.csdn.net/qianwenhao/article/details/2160014/clearerr(清除文件流的错误旗标) 相关函数 feof表头文件 #include<stdio.h> 定义函数 void clearerr(FILE * stream); 函数说明 clearerr()清除参数stream指定的文件流所使用的错误旗标。 返回值 fclose(关闭文件) 相关函数 close,fflush,fopen,setbuf 表头文件 #include<stdio.h> 定义函数 int fclose(FILE * stream 阅读全文
posted @ 2012-07-26 09:56 拿枪的程序员 阅读(302) 评论(0) 推荐(0)
摘要:在阅读代码时,遇到了很早之前用过的fseek(),很久没有用了,有点陌生,写出来以便下次查阅。函数功能是把文件指针指向文件的开头,需要包含头文件stdio.hfseek函数名: fseek功 能: 重定位流上的文件指针用 法: int fseek(FILE *stream, long offset, int fromwhere);描 述: 函数设置文件指针stream的位置。如果执行成功,stream将指向以fromwhere为基准,偏移offset个字 节的位置。如果执行失败(比如offset超过文件自身大小),则不改变stream指向的位置。返回值: 成功,返回0,否则返回其他值。fsee 阅读全文
posted @ 2012-07-26 09:47 拿枪的程序员 阅读(5712) 评论(1) 推荐(0)
摘要:1、概要 相信大部分关注本篇文章的你们都曾经写过console程序,那么你们是否面厌烦了一层不变的“黑底白字”的屏幕,是否有曾想过要给console程序的屏幕画画“彩妆”呢?本篇文章就是介绍如何给console程序显示彩色文字。 2、给console程序屏幕画彩妆 直接进入主题,需要用到的函数有: GetStdHandle SetConsoleTextAttribute 另外演示代码中还用到了: WriteFile GetConsoleScreenBufferInfo2.1、GetStdHandle GetStdHandle是获得标准的输入、输出和错误的设备句柄,也就是获得输... 阅读全文
posted @ 2012-02-02 09:03 拿枪的程序员 阅读(256) 评论(0) 推荐(0)
摘要:const用法详解面向对象是C++的重要特性. 但是c++在c的基础上新增加的几点优化也是很耀眼的就const直接可以取代c中的#define以下几点很重要,学不好后果也也很严重const1. 限定符声明变量只能被读 const int i=5; int j=0; ... i=j; //非法,导致编译错误 j=i; //合法2. 必须初始化 const int i=5; //合法 const int j; //非法,导致编译错误3. 在另一连接文件中引用const常量 extern const int i; //合法 extern const int j=10; //非法,常量不可以被再次赋值 阅读全文
posted @ 2011-06-11 15:31 拿枪的程序员 阅读(213) 评论(0) 推荐(0)
摘要:出现在作用域中的两个函数,如果具有相同的名字而形参表不同,则称为重载函数。重载函数在作用域方面特别要注意:string init();// the name init has global scopevoid fcn(){int init = 0;//init is local and hides global initstring s = init();//error: global init is hidden}上面 的函数里面的fcn()函数就覆盖了全局函数init();再看下例:void print(const string &);void print(double );//o 阅读全文
posted @ 2011-06-10 19:00 拿枪的程序员 阅读(338) 评论(0) 推荐(0)