C++
hexiankang1984
这个作者很懒,什么都没留下…
展开
-
VS2005调试技巧
下面有从浅入深的6个问题,您可以尝试回答一下一个如下的语句for (int i = 0; i 在一个1000次的循环体内部设置断点,你希望当循环进行到900次后中断,怎么才能做到呢? 你有一个表达式在上面循环的某一次发生了变化,你想知道是哪一次,在哪个地方,怎么才能做到? 你希望你的断点在被命中100次后,每命中三次中断一次,比如第103,第106,第109怎样做? 你有在调试一个服务程序,希转载 2010-03-22 11:28:00 · 217 阅读 · 0 评论 -
C++中类的多态与虚函数的使用
C++的三大特性:封装、继承、多态。以前学的时候自己没去总结,记得在一本c++入门的书讲得还是比较清楚。今天上网找了一下多态,找到下面这篇文章写得比较清晰。http://pcedu.pconline.com.cn/empolder/gj/c/0503/574706.html 类的多态特性是支持面向对象的语言最主要的特性,有过非面向对象语言开发经历的人,通常对这一章节的内容会觉得不习惯,因为很多人错误的认为,支持类的封装的语言就是支持面向对象的,其实不然,Visual BASIC 6.0是典型的非面向转载 2011-04-21 10:52:00 · 235 阅读 · 0 评论 -
判断文件是否存在的方法
1, _access( )crt_access.c // compile with: /W1 // This example uses _access to check the file named // crt_ACCESS.C to see if it exists and if writing is allowed.转载 2011-04-11 10:28:00 · 247 阅读 · 0 评论 -
关于在VS2005下编译出现was declared deprecated警告的问题
在VS2005下编译代码,有时会遇到类似如下的警告: warning C4996: 'strcat' was declared deprecated. 通常这类警告都是由于调用了字符串相关函数引起的。虽然这警告无伤大雅,仅仅只是说使用的函数已过时(deprecated),但看着实在别扭,且看看ms为什么要设置成这样。 搜索了一下ms的网站,找到了结果。ms认为以前的c/c++库中有一部分函数不够安全,希望程序员可以使用他们的替代安全库(Safe Library)来避免不必要的隐患。整个原文请点击以下链转载 2011-02-12 13:04:00 · 353 阅读 · 0 评论 -
CreateFile函数详解
CreateFile <br />The CreateFile function creates or opens the following objects and returns a handle that can be used to access<br />the object:<br /> files<br /> pipes<br /> mailslots<br /> communications resources<br /> disk devices(Windows NT only)<br /转载 2010-09-01 14:53:00 · 167 阅读 · 0 评论 -
关于VC编译器设置内存断点的问题
<br /> 最近在CE平台的设备上调试代码,想要监控某一变量的内存变化,于是试试前段时间学的关于如何设置内存断点,Debug->new Breakpoint-> new DataBreakPoint,结果却是不可按状态。后来在网上查找原因,结果说Data Breakpoints is not supported for smart Device Debugging, thats why this is disabled,大意就是说智能设备类型的项目不支持设置数据断点,郁闷~~~。看来还得想想别的方原创 2010-08-24 09:39:00 · 769 阅读 · 0 评论 -
strinr,int,char,double,CString各种类型转换方法
<br />1 CString,int,string,char*之间的转换 <br />string 转 CString <br />CString.format("%s", string.c_str()); <br />char 转 CString <br />CString.format("%s", char*); <br />char 转 string <br />string s(char *); <br />string 转 char * <br />char *p = string.c_str(转载 2010-08-17 19:25:00 · 529 阅读 · 0 评论 -
无法解析的外部符号的几种可能
<br />无法解析的外部符号的几种可能<br /> <br />1. lib 文件未引入。可使用“#pragma comment(lib, “winsock.lib”) ”语句添加 lib 引用,也可在项目依赖里添加。<br />2. 类方法的实现未加类标识。如, “CTest::Connect(void) { … }” 写成了 “Connect(void) { … }”。<br />3. 缺少 obj 文件。在项目里添加“包含路径”:C:/curl/lib/release-dll/*.obj。<br /转载 2010-08-16 11:08:00 · 624 阅读 · 1 评论 -
__declspec(dllimport) 到底有什么用?
我相信写WIN32程序的人,做过DLL,都会很清楚__declspec(dllexport)的作用,它就是为了省掉在DEF文件中手工定义导出哪些 函数的一个方法。当然,如果你的DLL里全是C++的类的话,你无法在DEF里指定导出的函数,只能用__declspec(dllexport)导出 类。但是,MSDN文档里面,对于__declspec(dllimport)的说明让人感觉有点奇怪,先来看看MSDN里面是怎么说的: 不使用 __declspec(dllimport) 也能正确编译代码,但使用 _转载 2010-08-07 12:43:00 · 176 阅读 · 0 评论 -
c/c++结构体对齐小结
<br />因为我看C++对象模型的时候,遇到了几个内存布局都是有关于对齐的一些细节,故此对结构体对齐再做一份小结,有人说:结构体对齐这个东西是依赖于编译器的,因此不用去研究,真的嘛?<br /> <br />也许是,也许不是,要看你是做那个行业的了,如果你是做系统地层,网络通讯,嵌入式系统的,一个字节的节省,也许对你是很大的期望呢。虽然具体的对齐方式是因编译器而异,但是对齐的基本原理是不变的,那个原理也许能指导我们编写程序的时候按照某个原则去进行。<br />不过,既然你用到了C或者C++,就多数是和系统转载 2010-08-07 12:19:00 · 142 阅读 · 0 评论 -
对于VC++报错:fatal error C1001: INTERNAL COMPILER ERROR
<br />有以下两种可能:<br />1、运算符重载时遇到以上错误代码<br />解决方法:<br />将#include<iostream> 改成 #include<iostream.h><br />然后去掉 using namespace std;<br />编译即可通过!<br /> <br />或者你要前向声明类,然后声明友元函数(注意不要加friend),也可以顺利通过编译!<br />或者你打上vc6.0的sp6补丁就可以了!<br /> <br /> <br /> <br /> <br />转载 2010-06-05 10:28:00 · 15959 阅读 · 5 评论 -
VC中#ifdef与#pragma once避免重复包含的区别
<br />在用VC6.0向导生成的头文件中,经常可以看见如下的代码段:<br /> <br /> #if !defined(AFX_RESIZABLELAYOUT_H__INCLUDED_)<br /> #define AFX_RESIZABLELAYOUT_H__INCLUDED_<br /> <br /> #if _MSC_VER > 1000<br /> #pragma once<br /> #endif // _MSC_VER > 1000<br />转载 2010-06-05 09:23:00 · 441 阅读 · 0 评论 -
C++中的引用
<br /> 引用是C++引入的新语言特性,是C++常用的一个重要内容之一,正确、灵活地使用引用,可以使程序简洁、高效。<br /> 引用简介<br /> 引用就是某一变量(目标)的一个别名,对引用的操作与对变量直接操作完全一样。<br /> 引用的声明方法:类型标识符 &引用名=目标变量名;<br /> 【例1】:int a; int &ra=a; //定义引用ra,它是变量a的引用,即别名<br /> 说明:<br /> (1)&在此不是求地址运算,而是起标识作用。<b转载 2010-07-28 09:51:00 · 134 阅读 · 0 评论 -
Visual Studio中的debug和release版本的区别
Debug通常称为调试版本,它包含调试信息,并且不作任何优化,便于程序员调试程序。Release称为发布版本,它往往是进行了各种优化,使得程序在代码大小和运行速度上都是最优的,以便用户很好地使用。Debug 和 Release 的真正秘密,在于一组编译选项。下面列出了分别针对二者的选项(当然除此之外还有其他一些,如/Fd /Fo,但区别并不重要,通常他们也不会引起 Release 版错误,在此不讨转载 2010-05-15 13:32:00 · 695 阅读 · 0 评论 -
超有用的C++调试小技巧--如何以数组方式查看指针
超有用的C++调试小技巧--如何以数组方式查看指针<br />转来的文章,太有用了。 <br /> <br />对于下面两个变量: <br />int *p = new int[10]; <br />int q[10]; <br />在watch窗口中查看有不同的效果,查看p的时候可以看到一个地址,展开+号只能看p[0]的值;查看q的时候也可以看到一个地址,但是展开+号可以看q[0]-q[9]的值。相比之下q的查看方式比p要方便多了。那么有没有办法以q的方式查看p呢,这就是本文要介绍的一个调试技巧。 <b原创 2010-07-06 12:45:00 · 471 阅读 · 0 评论 -
VC++的链接错误LNK2005
<br />VC++的链接错误LNK2005 <br /><br />编程中经常能遇到LNK2005错误——重复定义错误,其实LNK2005错误并不是一个很难解决的错误。弄清楚它形成的原因,就可以轻松解决它了。 <br /><br />造成LNK2005错误主要有以下几种情况: <br />1. 重复定义全局变量。可能存在两种情况: <br />A、 对于一些初学编程的程序员,有时候会以为需要使用全局变量的地方就可以使用定义申明一下。其实这是错误的,全局变量是针对整个工程的。正确的应该是在一个CPP文件中定转载 2010-07-01 16:48:00 · 385 阅读 · 1 评论 -
inline函数_内联函数的一些总结
<br />inline函数<br />我们看下面的函数,函数体中只有一行语句: <br /> double Average(double total, int number){ <br /> return total/number;<br /> } <br />定义这么简单的函数有必要吗?实际上,它还是有一些优点的:第一,它使程序更可读;第二,它使这段代码可以重复使用。但是,它也有缺点:当它被频繁地调用的时候,由于调用函数的开销,会对应用程序的性能(时间+空间效率,这儿特指时间)转载 2011-04-21 11:10:00 · 236 阅读 · 0 评论