
C/C++
荔-枝-lin
其实,怀念,在离开它之前就已经发生。
展开
-
C/C++中static关键字作用总结
1.先来介绍它的第一条也是最重要的一条:隐藏。(static函数,static变量均可)当同时编译多个文件时,所有未加static前缀的全局变量和函数都具有全局可见性。举例来说明。同时编译两个源文件,一个是a.c,另一个是main.c。//a.cchar a = 'A'; // global variablevoid msg(){转载 2015-03-18 11:00:42 · 465 阅读 · 0 评论 -
Socket中如何设置连接超时
设置connect的超时很简单,优快云上也有人提到过使用select,但却没有一个令人满意与完整的答案。偶所讲的也正是select函数,此函数集成在winsock1.1中,简单点讲,"作用使那些想避免在套接字调用过程中被锁定的应用程序,采取一种有序的方式,同时对多个套接字进行管理"(《Windows网络编程技术》原话)。使用方法与解释请见《Windows网络编程技术》。 在使用此函数前,需转载 2013-03-04 14:06:14 · 696 阅读 · 0 评论 -
线程中CreateEvent和SetEvent及WaitForSingleObject的用法
首先介绍CreateEvent是创建windows事件的意思,作用主要用在判断线程退出,程锁定方面.CreateEvent 函功能描述:创建或打开一个命名的或无名的事件对象.EVENT有两种状态:发信号,不发信号。 SetEvent/ResetEvent分别将EVENT置为这两种状态分别是发信号与不发信号。 WaitForSingleObject()等待,直到参数所指定的OBJ转载 2013-03-01 13:32:15 · 848 阅读 · 0 评论 -
regopenkeyex用法
RegCreateKeyEx 通过RegCreateKeyEx函数可以在 .... RegSetValueEx函数可以设置注册表中键的值,如今修改注册表成为继超频之后的又一大热点,许多CFAN通过对注册表的修改使Win98显得更加个性化,诸多报刊杂志也纷纷扯起注册表这面旗帜,令人遗憾的是,在介绍注册表修改的众多的文章中,大都以手工修改为例,极少数文章也只介绍有关修改注册表软件的用法,至于如何在转载 2012-12-17 16:57:03 · 1906 阅读 · 0 评论 -
UNREFERENCED_PARAMETER的作用
UNREFERENCED_PARAMETER 的作用2007年06月16日 星期六 14:38我们从 UNREFERENCED_PARAMETER 开始吧。这个宏在 winnt.h 中定义如下: #define UNREFERENCED_PARAMETER(P) (P) 换句话说 UNREFERENCED_PARAMETER 展开传递的参数或表达式。其目的是避免编译器关于未引用参转载 2012-12-17 13:28:55 · 629 阅读 · 0 评论 -
AllocSysString的使用
今天看到AllocSysString的函数,不知道干什么用的、它的作用是什么、在什么地方使用它??就baidugoogle了一下,最后也没搞懂只查到了,谁都可以调用他,关键是谁来释放释放使用SysFreeString()这个函数;如果是COM要传出字符串,基本上就只能使用AllocSysString函数了;如果是给COM传入一个字符串就没多大必要用这个函数了,这还会带来到底有谁释放的问题。CS原创 2012-12-07 11:06:37 · 8290 阅读 · 0 评论 -
SDK,API和MFC区别【转】
SDK很多人都认为SDK都是Microsoft公司提供的一个东东(具体什么东西我说了怕你就要关了这个网页了),其实不然,很多的软件公司和硬件公司在发布自己的产品的时候都会提供SDK,就比如说现在如火如荼的iPhon吧,他也同样发布了SDK,一些编程爱好者或是一些软件公司就会根据这些SDK开发出一系列软件放在iPhon上使用,也就是所谓的第三方开发,这样我们的手机也就不会显得太单调,SDK就是为转载 2012-11-08 10:20:06 · 711 阅读 · 0 评论 -
C++中关于类型转换的学习记录
记录一下每天学到的点滴知识,希望和大家一起经常温习。1.CString 型转化成 int 型,你可以使用_atoi()进行转换,但最好可以使用_ttoi()进行转换,它在 ANSI 编码系统中被编译成_atoi(),而在 Unicode 编码系统中编译成_wtoi()。你也可以考虑使用_tcstoul()或者_tcstol(),它们都能把字符串转化成任意进制的长整数(如二进制、八进制、十进制或原创 2012-11-07 11:11:13 · 924 阅读 · 0 评论 -
LPCTSTR,LPCSTR,LPTSTR,LPSTR的区别及用法
LPCSTR 32-bit 指针,指向一个常量字串 LPSTR 32-bit 指针,指向一个字串 LPCTSTR 32-bit 指针,指向一个常量字串。此字串可移植到Unicode 和DBCS LPTSTR 32-bit 指针,指向一个字串。此字串可移植到Unicode 和DBCS --------转载 2012-11-07 09:25:56 · 1164 阅读 · 0 评论 -
WM_GETMINMAXINFO的作用
如果想要实现窗口全屏,并且还有状态栏,会出现问题,那就是OnGetMinMaxInfo函数的作用。你可以试一下,如果把这个函数去掉,则当你按下工具栏中的全屏显示按钮时,框架视图确实变大了,但没有想象的那样实现全屏显示,底边留下一个状态栏——一个有些发育不良的全屏显示窗口。为什么会这样呢?经过调试后,发现问题出在WM_GETMINMAXINFO消息的处理上。在Windows中,无论什么时候以何种方式转载 2012-11-06 14:13:12 · 5697 阅读 · 0 评论 -
【讨论】vc++窗口的创建过程
一、什么是窗口类 在Windows中运行的程序,大多数都有一个或几个可以看得见的窗口,而在这些窗口被创建起来之前,操作系统怎么知道该怎样创建该窗口,以及用户操作该窗口的各种消息交给谁处理呢?所以VC在调用Windows的API(CreateWindow或者CreateWindowEx)创建窗口之前,要求程序员必须定义一个窗口类(不是传统C++意义上的类)来规定所创建该窗口所需要的各种信息,转载 2012-10-18 11:36:57 · 802 阅读 · 0 评论 -
OnEraseBkGnd and OnPaint and OnCtlColor
在OnEraseBkGnd中,如果你不调用原来缺省 的OnEraseBkGnd只是重画背景则不会有闪烁.而在OnPaint里面, 由于它隐含的调用了OnEraseBkGnd,而你又没有处理OnEraseBkGnd 函数,这时就和窗口缺省的背景刷相关了.缺省的 OnEraseBkGnd操作使用窗口的缺省背景刷刷新背景(一般情况 下是白刷),而随后你又自己重画背景造成屏幕闪动.翻译 2012-10-13 12:00:31 · 606 阅读 · 0 评论 -
sqlite3使用简介
一.使用流程要使用sqlite,需要从sqlite官网下载到三个文件,分别为sqlite3.lib,sqlite3.dll,sqlite3.h,然后再在自己的工程中配置好头文件和库文件,同时将dll文件放到当前目录下,就完成配置可以使用sqlite了。使用的过程根据使用的函数大致分为如下几个过程:sqlite3_open() sqlite3_prepare() sqlite3_st转载 2012-09-27 10:59:40 · 561 阅读 · 0 评论 -
怎样在VC++中访问和修改注册表
#include #include #include #include #include #include void main() { long result; PHKEY hkeyMykey; LPDWORD dwFlag; //LPDWORD dwType; result=RegCreateKeyEx(HKEY_LOCAL_MACHINE,"转载 2012-09-18 15:51:10 · 632 阅读 · 0 评论 -
CString总结
关于CString总结 前言:串操作是编程中最常用也最基本的操作之一。 做为VC程序员,无论是菜鸟或高手都曾用过Cstring。而且好像实际编程中很难离得开它(虽然它不是标准C++中的库)。因为MFC中提供的这个类对我们操作字串实在太方便了,CString不仅提供各种丰富的操作函数、操作符重载,使我们使用起串起来更象basic中那样直观;而且它还提供了动态内存分配,使我们减少了多少字符串转载 2012-09-10 14:54:40 · 560 阅读 · 0 评论 -
关于MFC中CString的用法
CStringCString没有基类。一个CString对象由可变长度的一队字符组成。CString使用类似于Basic的语法提供函数和操作符。连接和比较操作符以及简化的内存管理使CString对象比普通字符串数组容易使用。CString是基于TCHAR数据类型的对象。如果在你的程序中定义了符号_UNICODE,则TCHAR被定义为类型wchar_t,即16位字符类型;否则,TCHAR被定义为转载 2012-09-10 14:52:45 · 910 阅读 · 0 评论 -
VC中如何调用其他的可执行程序
C++程序中调用exe可执行文件在开发项目的时候,有的时候会分开来开发,分开的有时是exe文件,有的时候也会调用现成的工具包里面的一些exe文件,这样在项目里面就要通过调用exe文件来使用。那么在C++里面直接调用exe文件的方法有哪些呢?现在可考虑的方法主要有:a.使用system函数b.使用exec或者是execv函数c.使用WinExec函数d.使用C转载 2012-09-07 17:21:43 · 1122 阅读 · 0 评论 -
operator重载运算符
一、重载例子:class COperator{public: int a; int b;public: COperator (void); COperator (COperator &op); ~COperator (void);//操作符重载 COperator operator +(COperator &op); friend COperator operato转载 2012-09-05 14:16:16 · 1109 阅读 · 0 评论 -
友元函数用法
友元可以是一个函数,该函数被称为友元函数;友元也可以是一个类,该类被称为友元类。 友元函数 友元函数的特点是能够访问类中的私有成员的非成员函数。友元函数从语法上看,它与普通函数一样,即在定义上和调用上与普通函数一样。下面举一例子说明友元函数的应用。 #include #include class Point { p转载 2012-09-04 17:43:08 · 3409 阅读 · 0 评论 -
C++内联函数(Inline)介绍
介绍内联函数之前,有必要介绍一下预处理宏。内联函数的功能和预处理宏的功能相似。相信大家都用过预处理宏,我们会经常定义一些宏,如#define TABLE_COMP(x) ((x)>0?(x):0) 就定义了一个宏。 为什么要使用宏呢?因为函数的调用必须要将程序执行的顺序转移到函数所存放在内存中的某个地址,将函数的程序内容执行完后,再返回到转去转载 2012-09-04 14:35:58 · 483 阅读 · 0 评论 -
数组指针与指针数组
数组指针 为什么在有些时候我们需要定义指向数组而不是指向数组元素的指针?如何定义? 答案与分析: 使用指针,目的是用来保存某个元素的地址,从而来利用指针独有的优点,那么在元素需要是数组的情况下,就理所当然要用到指向数组的指针,比如在高维需要动态生成情况下的多维数组。 定义例子如下: int (*pElement)[2]。 下面是一个例子:转载 2012-09-03 16:46:02 · 394 阅读 · 0 评论 -
C/C++基础必知必会
2. 什么是“引用”?申明和使用“引用”要注意哪些问题? 答:引用就是某个目标变量的“别名”(alias),对应用的操作与对变量直接操作效果完全相同。申明一个引用的时候,切记要对其进行初始化。引用声明完毕后,相当于目标变量名有两个名称,即该目标原名称和引用名,不能再把该引用名作为其他变量名的别名。声明一个引用,不是新定义了一个变量,它只表示该引用名是目标变量名的一个别名,它本身不是一种数转载 2012-09-03 10:25:08 · 868 阅读 · 0 评论 -
C++ STL map的使用
1、map简介 map是一类关联式容器。它的特点是增加和删除节点对迭代器的影响很小,除了那个操作节点,对其他的节点都没有什么影响。对于迭代器来说,可以修改实值,而不能修改key。2、map的功能 自动建立Key - value的对应。key 和 value可以是任意你需要的类型。 根据key值快速查找记录,查找的复杂度基本是Log(N),如果有1000个记录,最多查找10次,1转载 2012-08-31 17:16:59 · 406 阅读 · 0 评论 -
C++中单例模式对象的释放控制分析
单例模式也称为单件模式、单子模式。使用单例模式,保证一个类仅有一个实例,并提供一个访问它的全局访问点,该实例被所有程序模块共享。有很多地方需要这样的功能模块,如系统的日志输出等。 单例模式有许多种实现方法,在C++中,甚至可以直接用一个全局变量做到这一点,但这样的代码显得很不优雅。《设计模式》一书中给出了一种很不错的实现,定义一个单例类,使用类的私有静态指针变量指向类的唯一实例,并用一转载 2012-08-30 13:52:33 · 1136 阅读 · 0 评论 -
C++的可移植性和跨平台开发[5]--操作系统
上一个帖子提到了"硬件体系"相关的话题,今天来说说和操作系统相关的话题。C++跨平台开发中和OS相关的琐事挺多,所以今天会啰嗦比较长的篇幅,请列位看官见谅 :-) 为了不绕口,以下把Linux和各种Unix统称为Posix系统。 ★文件系统(FileSystem以下简称FS) 刚开始搞跨平台开发的新手,多半都会碰上和FS相关的问题。所以先来聊一下FS。归纳下来,开发中容易碰上的F转载 2012-08-30 13:36:39 · 565 阅读 · 0 评论 -
C++的可移植性和跨平台开发[4]--硬件体系相关
这次聊的话题主要是和硬件体系有关的。比如你的程序需要支持不同类型的CPU(x86、SPARC、PowerPC),或者是同种类型不同字长的CPU(比如x86和x86-64),这时候你就需要关心一下硬件体系的问题。 ★基本类型的大小 C++中基本类型的大小(占用的字节数)会随着CPU字长的变化而变化。所以,假如你要表示一个int占用的字节数,千万不要直接写“4”(顺便说一下,直接写“4”还转载 2012-08-30 13:36:00 · 524 阅读 · 0 评论 -
C++的可移植性和跨平台开发[3]--异常处理
上一个帖子“语法”由于篇幅有限,没来得及聊异常,现在把和异常相关的部分单独拿出来说一下。 ★小心new分配内存失败 早期的老式编译器生成的代码,如果new失败会返回空指针。我当年用的Borland C++ 3.1似乎就是这样的,现在这种编译器应该不多见了。如果你目前用的编译器还有这种行为,那你就惨了。你可以考虑重载new操作符来抛出bad_alloc异常,便于进行异常处理。 稍微转载 2012-08-30 13:35:21 · 492 阅读 · 0 评论 -
C++的可移植性和跨平台开发[2]--语法
目前还有相当一部分开发人员在使用老式编译器干活,这些老式编译器可能对C++98支持不够。因此,当你的代码移植到这些老式的编译器上时,可能会碰到一些稀奇古怪的问题(包括编译出错和运行时错误)。下面这些注意事项有助于你绕过这些问题。 强调一下,后面提到的好几个条款都是通过回避C++的新语法来保证移植性。如果你用的是新式编译器,那么你可以不理会这些条款。 ★小心for循环变量的作用域(不转载 2012-08-30 13:34:54 · 483 阅读 · 0 评论 -
C++的可移植性和跨平台开发[1]--编译器
在跨平台的开发过程中,很多问题都和编译器有关。因此我们先来聊聊编译器相关的问题。 ★编译器的选择 首先,GCC是优先要考虑支持的,因为几乎所有操作系统平台都有GCC可用。它基本上成了一个通用的编译器了。如果你的代码在A平台的GCC能够编译通过,之后拿到B平台用类似版本的GCC编译,一般也不会有太大问题。因此GCC是肯定要考虑支持的。 其次,要考虑是否支持本地编译转载 2012-08-30 13:34:17 · 571 阅读 · 0 评论 -
C++中二维数组的动态创建于处理(zzl
C++中用new动态创建二维数组的格式一般是这样:TYPE (*p)[N] = new TYPE [][N];其中,TYPE是某种类型,N是二维数组的列数。采用这种格式,列数必须指出,而行数无需指定。在这里,p的类型是TYPE*[N],即是指向一个有N列元素数组的指针。还有一种方法,可以不指定数组的列数:int **p;p = new int*[10]; //注意,int转载 2012-08-30 11:37:05 · 565 阅读 · 0 评论 -
C++中的FILL和MEMSET(zzl) 的区分
fill 的头文件是 命名空间是std;示范代码:Cpp代码 #include using namespace std; int main() { char s[100]; fill(s,s+100,'a'); for(int i=0;i cout cout翻译 2012-08-30 11:27:39 · 790 阅读 · 0 评论 -
InternetOpen\InternetOpenUrl\InternetReadFile 等相关Win32 网络API 使用详细说明
这篇技术性文章讨论了如何利用Microsoft Win32网络函数创建一个网络浏览器。这篇文章的宗旨是让读者了解一些Win32网络函数的作用、能力和使用范围,而不是为这些功能给出一个详细的文档。这篇文章所配合的SurfBear样本应用程序使用Win32网络函数从网络服务器上读取HTML文件,并把它们显示成原始的、没有经过格式化的文本。 介绍 不通过网络,你就无法了解我的一个朋友。计算机杂志已经在i转载 2012-08-28 11:15:24 · 1269 阅读 · 0 评论 -
HINTERNET 句柄
这篇文章的内容可以简单总结如下:WinINet函数创建和使用类型为HINTERNET的句柄HINTERNET句柄不能与其他类型的句柄互换使用用InternetCloseHandle关闭HINTERNET句柄有多种类型的HINTERNET句柄,它们形成一个树结构,如下图所示: 图中带阴影的方框创建的HINTERNET句柄被下一级的函数使用;背景转载 2012-08-27 18:00:05 · 8839 阅读 · 2 评论 -
CInternetSession.OpenUrl连接限制(转)
译序:这是MSDN里的一篇,讲的很明白了。真不知道微软怎么想的,这么重要的东西,却藏藏掖掖的,被我发现了(前几天为这个问题郁闷了一段时间),翻译出来,让以后的开发人员少走点弯路吧。整个文章的意思是,如果你想用WinInet做多线程断点续传的开发,还是再多考虑考虑吧!! 摘要: WinInet会限制到单个HTTP服务器的同时连接数目。如果你超越这个限制,请求都将转载 2012-08-27 16:23:40 · 2598 阅读 · 0 评论 -
有关字符串类型总结
先char* 是指向ANSI字符数组的指针,其中每个字符占据8位(有效数据是除掉最高位的其他7位),这里保持了与传统的C,C++的兼容。 LP的含义是长指针(long pointer)。LPSTR是一个指向以‘\0’结尾的ANSI字符数组的指针,与char*可以互换使用,在win32中较多地使用LPSTR。而LPCSTR中增加的‘C’的含义是“CONSTANT”(常量),表明这种数原创 2012-08-25 10:33:04 · 662 阅读 · 0 评论 -
const char*, char const*, char*const的区别以及静态和非静态变量、函数的总结
const char*, char const*, char*const的区别问题几乎是C++面试中每次都会有的题目。 事实上这个概念谁都有,只是三种声明方式非常相似很容易记混。 Bjarne在他的The C++ Programming Language里面给出过一个助记的方法: 把一个声明从右向左读。 char * const cp; ( * 读成 pointer to转载 2012-08-24 13:51:26 · 771 阅读 · 0 评论 -
WTL,ATL与MFC之比较
MFC,ATL,WTL的历史沿袭需求推动了技术的发展,从MFC到ATL,从ATL再到WTL的发展历程我想就是一个最好的见证。早期的VC++开发者们发现了MFC(Microsoft Foundation Classes) 这样一个好东东。他们发现,MFC提供了一个强大的类库,很好的满足了面向对象编程的需要。随着泛型编程技术的发展和时间的推移,慢慢地,他们慢慢觉得MFC的类库过于庞大和宽泛转载 2012-08-21 09:25:24 · 511 阅读 · 0 评论 -
vector的用法
vector(向量): C++中的一种数据结构,确切的说是一个类.它相当于一个动态的数组,当程序员无法知道自己需要的数组的规模多大时,用其来解决问题可以达到最大节约空间的目的. 用法: 1.文件包含: 首先在程序开头处加上#include以包含所需要的类文件vector 还有一定要加上using namesp转载 2012-08-16 14:52:39 · 364 阅读 · 0 评论 -
C++内存分配秘籍—new,malloc,GlobalAlloc详解
C++内存分配秘籍—new,malloc,GlobalAlloc详解 _______只为因内存分配而无法入眠的程序员一。关于内存 1、内存分配方式 内存分配方式有三种: (1)从静态存储区域分配。内存在程序编译的时候就已经分配好,这块内存在程序的整个运行期间都存在。例如全转载 2012-08-16 14:25:44 · 510 阅读 · 0 评论 -
远程开机控制详解
远程开机Wake onLAN(WOL),俗称远程唤醒,是现在很多网卡都支持的功能。而远程唤醒的实现,主要是向目标主机发送特殊格式的数据包,是AMD公司制作的MagicPacket这套软件以生成网络唤醒所需要的特殊数据包,俗称魔术包(Magic Packet)。MagicPacket格式虽然只是AMD公司开发推广的技术,并非世界公认的标准,但是仍然受到很多网卡制造商的支持,因此许多具有网络唤醒功原创 2012-08-15 17:09:18 · 1868 阅读 · 0 评论