随笔分类 -  C++

该文被密码保护。

posted @ 2012-03-13 11:43 无忧consume 阅读(1) 评论(0) 推荐(0) |

摘要:大多数情况下都是vc安装的问题试试下面的方法吧:(转的)Compiling...Error spawning cl.exe3-6.exe - 1 error(s), 0 warning(s)可能很多人在安装VC 6.0后有过点击“Compile”或者“Build”后被出现的“Compiling... ,Error spawning cl.exe”错误提示给郁闷过。很多人的选择是重装,实际上这个问题很多情况下是由于路径设置的问题引起的,“CL.exe”是VC使用真正的编译器(编译程序),其路径在“VC根目录\VC98\Bin”下面,你可以到相应的路径下找到这个应用程序。因此问题可以按照以下方法解 阅读全文

posted @ 2012-03-11 23:27 无忧consume 阅读(357) 评论(0) 推荐(0) |

该文被密码保护。

posted @ 2012-02-03 01:58 无忧consume 阅读(1) 评论(0) 推荐(0) |

摘要:对于STL中的map,插入有两种方法:1、map <int,int>a; a[1 ]=1 //此方法初始化a[1],并给a[1]赋值。 a[1]=2 //此方法修改了a[1的值。2 map <int,int>a; a.insert(map<int,int>::value_type(1,1)); //此方法初始化a[1],并给a[1]赋值。 a.insert(map<int,int>::value_type(1,2)); //因为a[1]已经存在,此方法不能初始化a[1],也不能修改a[1]的值。3 特别注意的是,因为[ ]被重载为,如果不存在该k 阅读全文

posted @ 2012-01-15 23:48 无忧consume 阅读(207) 评论(0) 推荐(0) |

摘要:STL中的容器按存储方式分为两类,一类是按以数组形式存储的容器(如:vector 、deque);另一类是以不连续的节点形式存储的容器(如:list、set、map)。在使用erase方法来删除元素时,需要注意一些问题。在使用 list、set 或 map遍历删除某些元素时可以这样使用: 正确使用方法1std::list< int> List;std::list< int>::iterator itList;for( itList = List.begin(); itList != List.end(); ){if(WillDelete(*itList) ){itLis 阅读全文

posted @ 2012-01-15 23:46 无忧consume 阅读(208) 评论(0) 推荐(0) |

摘要:【动态链接需要什么函数库】 众所周知,Windows支持动态链接,换句话说,应该程序所调用的Windows API函数是在“执行时期”才链接上去的。 Windows程序调用的函数可分为C Runtimes和Windows API两在部分,以下是C Runtimes所用到库文件及其说明: ■LIBC.LIB ---- 这是C Runtimes函数库的动态链接版本。 ■MSVCRT.LIB ---- 这是C Runtimes函数库动态链接版本(如果链接这一函数库,你的程序执行进必须有MSVCRT40.DLL)。 对于API函数则由系统的三大模块GDI32.DLL、USER32.DLL和D... 阅读全文

posted @ 2012-01-15 23:42 无忧consume 阅读(646) 评论(0) 推荐(0) |

摘要:考虑单窗口情况:假设自己通过new创建了一个窗口对象pWnd,然后pWnd->Create。则销毁窗口的调用次序:1.手工调用pWnd->DestroyWindow();2.DestroyWindow会发送WM_DESTROY;3.WM_DESTROY对应的消息处理函数是OnDestroy();4.DestroyWindow会发送WM_NCDESTROY;5.WM_NCDESTROY对应的消息处理函数是OnNcDestroy;6.OnNcDestroy最后会调用PostNcDestroy;7.PostNcDestroy经常被用户重载以提供释放内存操作。例如可以使用delete th 阅读全文

posted @ 2012-01-15 23:39 无忧consume 阅读(373) 评论(0) 推荐(0) |

摘要:在使用TCP连接的时候,客户端链接到服务器成功,然后正常使用closesocket断开,再次连接时失败,过一会儿再连接就可以成功,不知道为什么,google了一下,终于明白了原因。 原来在TCP连接后,主动去断开的一端会进入TIME_WAIT状态,在这个状态下,会等待2MSL的时间才会把本地申请的socket资源全部释放,否则在这段时间内是不能够再次使用之前的端口进行收发数据的。而对于某些应用来说,需要断开后立刻连接,这样就不能够成功了。这个问题无法解决,只能够去设置MSL的时间,最短可以是30s。 还有的网友回帖说,在TCP断开的时候可以采用两种断开方式,一种是优雅的断开,另一种就是... 阅读全文

posted @ 2012-01-15 23:34 无忧consume 阅读(912) 评论(0) 推荐(0) |

摘要:从函数调用上来分析(msdn):一旦完成了套接字的连接,应当将套接字关闭,并且释放其套接字句柄所占用的所有资源。真正释放一个已经打开的套接字句柄的资源直接调用closesocket即可,但要明白closesocket的调用可能会带来负面影响,具体的影响和如何调用有关,最明显的影响是数据丢失,因此一般都要在closesocket之前调用shutdown来关闭套接字。 shutdown:为了保证通信双方都能够收到应用程序发出的所有数据,一个合格的应用程序的做法是通知接受双发都不在发送数据!这就是所谓的“正常关闭”套接字的方法,而这个方法就是由shutdown函数,传递给它的参数有SD_RE... 阅读全文

posted @ 2012-01-15 23:28 无忧consume 阅读(661) 评论(0) 推荐(0) |

摘要:Theshutdownfunction disables sends or receives on a socket.Syntaxint shutdown( __inSOCKET s, __inint how);Parameterss[in]A descriptor identifying a socket.how[in]A flag that describes what types of operation will no longer be allowed. Possible values for this flag are listed in theWinsock2.hheader.. 阅读全文

posted @ 2012-01-15 23:26 无忧consume 阅读(264) 评论(0) 推荐(0) |

摘要:利用GetLastError()获得的socket编程中常见错误常数值描述sckOutOfMemory7内存不足sckInvalidPropertyValue380属性值无效。sckGetNotSupported394属性不可读。sckSetNotSupported383属性是只读的。sckBadState40006所请求的事务或请求本身的错误协议或者错误连接状态。sckInvalidArg40014传递给函数的参数格式不确定,或者不在指定范围内。sckSuccess40017成功。sckUnsupported40018不受支持的变量类型。sckInvalidOp40020在当前状态下的无效操 阅读全文

posted @ 2012-01-15 23:23 无忧consume 阅读(1353) 评论(0) 推荐(0) |

摘要:原文地址:http://hi.baidu.com/quanhaili/blog/item/5a40ba86b37e1b22c65cc38f.html静态类成员包括静态数据成员和静态函数成员两部分。 一 静态数据成员: 类体中的数据成员的声明前加上static关键字,该数据成员就成为了该类的静态数据成员。和其他数据成员一样,静态数据成员也遵守public/protected/private访问规则。同时,静态数据成员还具有以下特点: 1.静态数据成员的定义。 静态数据成员实际上是类域中的全局变量。所以,静态数据成员的定义(初始化)不应该被放在头文件中。 其定义方式与全局变量相同。举例如... 阅读全文

posted @ 2012-01-15 22:39 无忧consume 阅读(189) 评论(0) 推荐(0) |

摘要:原文地址http://blog.csdn.net/danky/article/details/1429249 自定义的术语:类级成员(class level member)和对象级成员(object level member)。我不知道在C++领域里是否已经有这样的术语,只是我觉得这两个术语可以很好地帮助我们理解static member function。在这里可以就有人想指正我了:本来成员(member)就是类独有的一部分,还分什么类级和对象级的。但我相信如果你看完本文后,你原来对static member function的那种一知半解,会演变成现在的“原来是这么一回事”的话,你会觉得. 阅读全文

posted @ 2012-01-15 22:25 无忧consume 阅读(688) 评论(0) 推荐(0) |

摘要:C Runtime是windows平台下的一个概念。一般来说,CRT函数就是标准的C语言函数。例如,printf、scanf、strlen、fopen等函数就属于CRT函数。在windows下所有的CRT函数最终都是转化成为win32 API来执行的。windows本身并没有在内核之上提供对CRT的支持。CRT既可以通过静态连接来实现,也可以通过动态链接来实现(MSVCRT.DLL)。 当C Runtime函数库于20世纪70年代产生出来时,PC的内存容量还很小,多任务是个新奇观念,更别提什么多线程了。因此以当时产品为基础所演化的C Runtime函数库在多线程(multithreade... 阅读全文

posted @ 2012-01-15 22:13 无忧consume 阅读(341) 评论(0) 推荐(0) |

摘要:VS 2008中出现的错误1>cl : Command line warning D9035 : option 'Wp64' has been deprecated and will be removed in a future release原因:vs2008不再建议使用/wp64检测64兼容问题,因为可以直接在32位OS上交叉编译为64位代码(vs2005也可以)。vs2008建议直接使用该方法检测64位兼容性问题。该选项被设置为“不推荐”有个原因是它会导致某些template库发生许多无效的warning。解决办法:property c/c++ Detect 64 阅读全文

posted @ 2012-01-15 22:08 无忧consume 阅读(249) 评论(0) 推荐(1) |

摘要:迭代器iterator为STL中重要概念vector<NODE>::iterator FindMin(vector<NODE> &vect){ vector<NODE>::iterator min = vect.begin(); vector<NODE>::iterator iter = vect.begin(); while(iter != vect.end()) { if((*itor).Value < (*min).Value) { min = iter; } iter ++; } return min;} iterator的 阅读全文

posted @ 2012-01-15 22:05 无忧consume 阅读(210) 评论(0) 推荐(0) |

摘要:volatile关键字是一种类型修饰符,用它声明的类型变量表示可以被某些编译器未知的因素更改。 用volatile关键字声明的变量i每一次被访问时,执行部件都会从i相应的内存单元中取出i的值。 没有用volatile关键字声明的变量i在被访问的时候可能直接从cpu的寄存器中取值(因为之前i被访问过,也就是说之前就从内存中取出i的值保存到某个寄存器中),之所以直接从寄存器中取值,而不去内存中取值,是因为编译器优化代码的结果(访问cpu寄存器比访问ram快的多)。 以上两种情况的区别在于被编译成汇编代码之后,两者是不一样的。之所以这样做是因为变量i可能会经常变化,保证对特殊地址的稳定访问... 阅读全文

posted @ 2012-01-15 15:07 无忧consume 阅读(215) 评论(0) 推荐(0) |

摘要:__asm关键字启动内联汇编并且能写在任何c/c++合法语句之处.它不能单独出现.它必须接汇编指令、一组被大括号包含的指令或一对空括号.术语“__asm 块”在这里是任意一个指令或一组指令无论是否在括号内。以下代码片段是在括号内的一个简单的__asm块。__asm{ mov al, 2 mov dx, 0xD007 out al, dx}另一种方法是,你可以在每个汇编指令前放置__asm__asm mov al, 2__asm mov dx, 0xD007__asm out al, dx因为__asm关键字是一个语句分隔符,你也可以将汇编指令放在同一行:__asm mov al, 2 __as 阅读全文

posted @ 2012-01-15 15:01 无忧consume 阅读(778) 评论(0) 推荐(0) |

摘要:在寄存器里面有很多寄存器虽然他们的功能和使用没有任何的区别,但是在长期的编程和使用中,在程序员习惯中已经默认的给每个寄存器赋上了特殊的含义,比如:EAX一般用来做返回值,ECX用于记数等等。 在win32的环境下EBP寄存器用与存放在进入call以后的ESP的值,便于退出的时候回复ESP的值,达到堆栈平衡的目的。 应用以前说过的一段话: 原程序的OEP,通常是一开始以 Push EBP 和MOV Ebp,Esp这两句开始的,不用我多说大家也知道这两句的意思是以EBP代替ESP,作为访问堆栈的指针。 为什么要这样呢?为什么几乎每个程序都是的开头能?因为如果我们写过C等函数的时候就应... 阅读全文

posted @ 2012-01-15 14:56 无忧consume 阅读(371) 评论(0) 推荐(0) |

摘要:VC++中编程编译生成的各文件都有后缀,各种后缀名文件意思如下: .h头文件 .cpp源文件 .dsw工程文件----可以没有 .dsp工程文件-----一定要有 .clw 支持ClassWizard .ncb 支持ClassView .opt 保存工作空间配置 .aps 支持ResourceView .bsc 浏览器信息文件.dsp 项目文件.dsw 工作空间文件 .mak 外部创建文件 .plg 建立日志文件 .dsw这是MFC自动生成工作区文件,它包含当前工作区所包含项目信息。 .dsp这是MFC生成项目文件,它包含当前项目设置、所包含文件等信息。 .MAK这是MFC项目项目文件,这也是 阅读全文

posted @ 2012-01-15 14:52 无忧consume 阅读(443) 评论(0) 推荐(0) |

博客园  ©  2004-2025
浙公网安备 33010602011771号 浙ICP备2021040463号-3