C++语言
airbigboy
这个作者很懒,什么都没留下…
展开
-
extern "C"的用法解析
extern "C"的用法解析1.引言 C++语言的创建初衷是“a better C”,但是这并不意味着C++中类似C语言的全局变量和函数所采用的编译和连接方式与C语言完全相同。作为一种欲与C兼容的语言,C++保留了一部分过程式语言的特点(被世人称为“不彻底地面向对象”),因而它可以定义不属于任何类的全局变量和函数。但是,C++毕竟是一种面向对象的程序设计语言,为了支持函转载 2012-07-11 23:08:16 · 422 阅读 · 0 评论 -
GetLastError
GetLastError返回的值通过在api函数中调用SetLastError或SetLastErrorEx设置。函数 并无必要设置上一次错误信息,所以即使一次GetLastError调用返回的是零值,也不能 担保函数已成功执行。只有在函数调用返回一个错误结果时,这个函数指出的错误结果 才是有效的。通常,只有在函数返回一个错误结果,而且已知函数转载 2013-05-13 09:23:56 · 1419 阅读 · 0 评论 -
win32下进程间通信——共享内存
一、引言 在Windows程序中,各个进程之间常常需要交换数据,进行数据通讯。WIN32 API提供了许多函数使我们能够方便高效的进行进程间的通讯,通过这些函数我们可以控制不同进程间的数据交换. 进程间通讯(即:同机通讯)和数据交换有多种方式:消息、共享内存、匿名(命名)管道、邮槽、Windows套接字等多种技术。“共享内存”(shared memory)可以定义为对一个以上的转载 2013-05-06 13:31:21 · 1049 阅读 · 0 评论 -
CSingleLock
CSingleLockCSingleLockCSingleLock没有基类。一个CSingleLock类对象代表一种访问控制机制,这种机制用于控制在一个多线程程序中对一个资源的访问。为了使用同步类CSemaphore,CMutex,CCriticalSection,和CEvent。你必须创建一个CSingleLock或CMultiLock对象来等待和释放这个同步对象。当转载 2013-05-03 14:53:33 · 850 阅读 · 0 评论 -
理解EnterCriticalSection 临界区
通俗解释就像上厕所: 门锁了,就等着,等到别人出来了,进去锁上,然后该干什么干什么,干完了,把门打开门没锁,就进去,锁上,然后该干什么干什么,干完了,把门打开-------------------------------------------------- 多线程中用来确保同一时刻只有一个线程操作被保护的数据InitializeCriticalSection(&c转载 2013-05-03 14:52:51 · 652 阅读 · 0 评论 -
WM_COPYDATA实现进程间数据共享
进程通信——使用WM_COPYDATA消息通信3.4 使用WM_COPYDATA消息通信对于少量数据可以用WM_COPYDATA方便地实现通信。由于SendMessage()是阻塞的,只有接收方响应了消息,SendMessage()才能返回,否则一直阻塞。所以,对于大量数据来说,用SendMessage()就容易造成窗口假死。3.4.1 通过WM_COPYDATA消息实现进程间通信转载 2013-04-28 14:52:01 · 685 阅读 · 0 评论 -
C/C++程序内存类型
一直都把堆栈放一起,所以很多人会误以为他们的组合是一个词语,就像“衣服”一样简单,其实不然,今天在下就将最近学习总结的一些与大家分享。 一个由C/C++编译的程序占用的内存分为以下几个部分: 1、栈区(stack):又编译器自动分配释放,存放函数的参数值,局部变量的值等,其操作方式类似于数据结构的栈。 2、堆区(heap):一般是由程序员分配释放,若程序员转载 2013-04-18 18:23:20 · 660 阅读 · 0 评论 -
WaitForSingleObject函数的使用
等待函数可使线程自愿进入等待状态,直到一个特定的内核对象变为已通知状态为止。这些等待函数中最常用的是WaitForSingleObject: DWORD WaitForSingleObject(HANDLE hObject, DWORD dwMilliseconds);当线程调用该函数时,第一个参数hObject标识一个能够支持被通知/未通知的内核对象。第二个参数dwMillis转载 2013-04-27 10:23:14 · 858 阅读 · 0 评论 -
Windows 下的进程间通讯及数据共享
Windows 下有很多方法实现进程间通讯,比如用 socket,管道(Pipe),信箱(Mailslot),等等。但最基本最直接的还是使用内存共享。其他方法最终还是会绕道这里。可想而知,如果物理内存只有一份,让这份内存在不同的进程中,映射到各自的虚拟地址空间上,每个进程都可以读取同一份数据,是一种最高效的数据交换方法。下面我们就讨论如何实现它。共享内存在 Windows 中是用转载 2013-04-19 13:28:50 · 483 阅读 · 0 评论 -
CreateMutex
HANDLE hMutex; hMutex = ::CreateMutex(NULL, FALSE, NULL); ::WaitForSingleObject(hMutex, INFINITE); // 1 ::WaitForSingleObject(hMutex, INFINITE); // 2好多初学者都认为,设置为FALSE就是没有获得获得信号。。 其实这是错误的转载 2013-04-27 09:52:01 · 722 阅读 · 0 评论 -
线程中CreateEvent和SetEvent及WaitForSingleObject的用法
线程中CreateEvent和SetEvent及WaitForSingleObject的用法首先介绍CreateEvent是创建windows事件的意思,作用主要用在判断线程退出,程锁定方面.CreateEvent函功能描述:创建或打开一个命名的或无名的事件对象.EVENT有两种状态:发信号,不发信号。 SetEvent/ResetEvent分别将EVENT转载 2013-04-27 09:54:35 · 807 阅读 · 0 评论 -
char和TCHAR之间转换
VC char和TCHAR之间转换char:计算机编程语言(c、c++、java、VFP等)中可容纳单个字符的一种基本数据类型。TCHAR:为了满足Unicode编码,对char的扩展,即_T(“str”)表示TCHAR类型C++支持两种字符串,即常规的ANSI编码(使用""包裹)和Unicode编码(使用L""包裹),这样对应的就有了两套字符串字符串处理函数,比如:strlen和转载 2013-03-01 14:43:36 · 991 阅读 · 0 评论 -
静态成员函数调用非静态成员变量
程序最终都将在内存中执行,变量只有在内存中占有一席之地时才能被访问。类的静态成员(变量和方法)属于类本身,在类加载的时候就会分配内存,可以通过类名直接去访问;非静态成员(变量和方法)属于类的对象,所以只有在类的对象产生(创建类的实例)时才会分配内存,然后通过类的对象(实例)去访问。在一个类的静态成员中去访问其非静态成员之所以会出错是因为在类的非静态成员不存在的时候类的静态成员就已经存在了,转载 2013-02-27 11:17:02 · 571 阅读 · 0 评论 -
C++中Txt文件读取和写入
C++中Txt文件读取和写入一、ASCII 输出为了使用下面的方法, 你必须包含头文件(译者注:在标准C++中,已经使用取代,所有的C++标准头文件都是无后缀的。)。这是 的一个扩展集, 提供有缓冲的文件输入输出操作. 事实上, 已经被包含了, 所以你不必包含所有这两个文件, 如果你想显式包含他们,那随便你。我们从文件操作类的设计开始, 我会讲解如何进行ASCII I/O操作。如果你猜是转载 2013-03-04 17:40:17 · 732 阅读 · 0 评论 -
C++回调函数用法
一回调函数我们经常在C++设计时通过使用回调函数可以使有些应用(如定时器事件回调处理、用回调函数记录某操作进度等)变得非常方便和符合逻辑,那么它的内在机制如何呢,怎么定义呢?它和其它函数(比如钩子函数)有何不同呢?使用回调函数实际上就是在调用某个函数(通常是API函数)时,将自己的一个函数(这个函数为回调函数)的地址作为参数传递给那个函数。而 那个函数在需要的时候,利用传递转载 2013-06-04 11:22:20 · 585 阅读 · 0 评论