
VS
MAZHEN1986
这个作者很懒,什么都没留下…
展开
-
win32 console
win32 project1、int APIENTRY _tWinMain(HINSTANCE hInstance, HINSTANCE hPrevInstance, LPTSTR lpCmdLine, int nCmdShow)2、int WINAPI WinMain(HINSTANCE hInstance, HINSTANCE hPrevIns原创 2012-09-02 20:00:36 · 796 阅读 · 0 评论 -
[OpenGL] 基于win32api建立多窗口GL应用程序
建立多窗口openGL程序,可以用来制作各种GL控制或者多视图GL程序,为以后设计组态openGL引擎试验。 基础知识 1.OpenGL与其他窗体应用程序消息循环上的不同这个大家都知道,因为其他窗体应用程序不需要实时绘制,但需要实时监听消息响应,所以为了提高性能,openGL和其他窗体程序的消息循环写法有一点点不一样。(就因为如此,所以我们需要使用多转载 2012-05-24 23:32:50 · 1372 阅读 · 0 评论 -
ANSI C 前值类型转换bug
int array[] = {23, 34, 12,17,204,99};#define Total_ELEMENTS sizeof(array)/sizeof(array[0]) int main() {int d = -1, x = 0;if(d x= array[d+1];printf("%d\n", x);return 0; }size原创 2012-05-24 18:59:58 · 403 阅读 · 0 评论 -
精确获取时间(QueryPerformanceCounter)
LARGE_INTEGER tima,timb; QueryPerformanceCounter(&tima);在 Windows Server 2003 和 WindowsXP 中使用 QueryPerformanceCounter 函数的程序可能执行不当QueryPerformanceCounter 來精確計算執行時間QueryPerformanceCounter 來精转载 2012-05-23 20:54:16 · 514 阅读 · 0 评论 -
VS错误积攒
当map/set的某一个元素已经指向空,那么*p就会出现这种错误1、当有vector成员vec但是为空, 即size() == 0时候,如果调用vec[i就会出现这种情况,或是访问越界也会出现这种错误原创 2012-05-04 01:31:46 · 479 阅读 · 0 评论 -
Visual Studio 2008 环境变量的配置
http://www.cnblogs.com/waterlin/archive/2011/10/31/2230341.html在调试 Visual Studio 2008 程序时,经常有一些动态链接库(即 dll 文件)需要加载到工程里,这样才能依赖第三方库进行程序调试。这些动态链接库,往往都是测试版本或是开发中的版本,或者会有若干个版本;这个时候,如果直接把 dll 所在目录转载 2012-05-22 09:39:45 · 429 阅读 · 0 评论 -
.obj, .lib, .dll, .exe的关系
lib是和dll对应的。 lib是静态的库文件,dll是动态的库文件。 所谓静态就是link的时候把里面需要的东西抽取出来安排到你的exe文件中,以后运行你的exe的时候不再需要lib。 所谓动态就是exe运行的时候依赖于dll里面提供的功能,没有这个dll,你的exe无法运行。 lib, dll, exe都算是最终的目标文件,是转载 2012-05-22 09:44:23 · 349 阅读 · 0 评论 -
extern数组与extern指针
http://blog.youkuaiyun.com/hxg130435477/article/details/4012686extern数组与extern指针数组名代表了存放该数组的那块内存,它是这块内存的首地址。这就说明了数组名是一个地址,而且,还是一个不可修改的常量,完整地说,就是一个地址常量。数组名跟枚举常量一样,都属于符号常量。数组名这个符号,就代表了那块内存的首地址。注意了!不是数转载 2012-05-21 18:01:50 · 470 阅读 · 0 评论 -
-1.#IND0 1.#qnan0
在VS遇到-1.#IND000000000000一般是除数分母为0导致还有在acos(a/b),当 a=1 b = 1也可能出现这种情况 -1.#IND000000000000 1.#qnan0 /0的缘故,即使是0/0也可能会出现这种情况原创 2012-05-04 23:33:23 · 4619 阅读 · 0 评论 -
STL之容器:选择时机,删除元素,迭代器失效
http://www.cnblogs.com/lichkingct/archive/2009/05/04/1449101.html一. 种类:标准STL序列容器:vector、string、deque和list。标准STL关联容器:set、multiset、map和multimap。非标准序列容器slist和rope。slist是一个单向链表,rope本质上是一个重型字符串非标准关转载 2012-05-18 14:31:32 · 470 阅读 · 0 评论 -
初始化 多余逗号Arrays: additionnal commas
http://www.nicollet.net/2009/04/arrays-commas/This is starting to look like “attack of the arrays”, but there are so many interesting things to discuss!Consider for a moment these languages:转载 2012-06-03 14:39:12 · 802 阅读 · 0 评论 -
CONST
C中的CONST百科名片const是一个C语言的关键字,它限定一个变量不允许被改变。使用const在一定程度上可以提高程序的安全性和可靠性,另外,在观看别人代码的时候,清晰理解const所起的作用,对理解对方的程序也有一些帮助。另外CONST在其他编程语言中也有出现,如C++、PHP5、C#.net、HC08 C。 C中CONST的转载 2012-05-16 10:08:22 · 466 阅读 · 0 评论 -
虚拟函数
虚拟函数的特性 虚拟函数是C++语言引入的一个很重要的特性,它提供了“动态绑定”机制,正是这一机制使得继承的语义变得相对明晰。 (1)基类抽象了通用的数据及操作,就数据而言,如果该数据成员在各派生类中都需要用到,那么就需要将其声明在基类中;就操作而言,如果该操作对各派生类都有意义,无论其语义是否会被修改或扩展,那么就需要将其声明在基类中。 (2)有些操作,如果对于转载 2012-05-16 09:38:26 · 375 阅读 · 0 评论 -
lint使用简介
LINT工具是一种软件质量保证工具,许多国外的大型专业软件公司,如微软公司,都把它作为程序检查工具,在程序合入正试版本或交付测试之前一定要保证通过了LINT检查,他们要求软件工程师在使用LINT时要打开所有的编译开关,如果一定要关闭某些开关,那么要给出关闭这些开关的正当理由。 可想而知,如果从我们编码后第一次编译程序时就使用LINT来检查程序,并且保证消除所有的LINT告警,我们转载 2012-05-25 13:11:15 · 1174 阅读 · 0 评论 -
VC的编译开关参数大全
vc可以可以通过Settings -->Project-->C/C++-->Customize来设置这个编译开关VC 编译命令开关 /C:在预处理输出中保留注释语句/c:只编译,不连接,相当于在"Build"菜单下选择了"Compile"/D:定义常量和宏,与源程序里的#define 有相同效果/E:预处原创 2012-05-25 13:01:41 · 686 阅读 · 0 评论 -
VS2008配置PC Lint (静态代码检查工具PC-Lint)
http://hi.baidu.com/bellgrade/blog/item/23929a8e054882f9f01f36e5.htmlPC-Lint的典型应用:1、检查区分int和BOOL。(typedef int BOOL;)2、未初始化的变量……官方地址:http://www.gimpel.com/也可以到优快云下载PC Lint 9Step1:下载完转载 2012-05-25 13:17:55 · 698 阅读 · 0 评论 -
LIB和DLL的区别与使用
共有两种库:一种是LIB包含了函数所在的DLL文件和文件中函数位置的信息(入口),代码由运行时加载在进程空间中的DLL提供,称为动态链接库dynamic link library。一种是LIB包含函数代码本身,在编译时直接将代码加入程序当中,称为静态链接库static link library。共有两种链接方式:动态链接使用动态链接库,允许可执行模块(.dll文件或.exe文件)仅转载 2012-09-02 19:52:05 · 477 阅读 · 0 评论 -
内存越界的概念和调试方法heap corruption
调试了两天,搞定了项目里一个内存越界的bug,于是记录一下,备查。所谓内存越界(Heap Corruption),就是指当内存输入超出了预分配的空间大小,就会覆盖该空间之后的一段存储区域,导致系统异常。越界访问是非常常见的一种黑客手段。内存越界通常有如下的表现:1 程序出现异常 异常的现象有很多,如:代码突然跑到不相干的地方去执行,访问异常,正常的变量操作也报错…转载 2012-08-11 14:15:58 · 1826 阅读 · 0 评论 -
同步多线程的同步机制
http://baike.baidu.com/view/2808915.htm 1、 Event 用事件(Event)来同步线程是最具弹性的了。一个事件有两种状态:激发状态和未激发状态。也称有信号状态和无信号状态。事件又分两种类型:手动重置事件和自动重置事件。手动重置事件被设置为激发状态后,会唤醒所有等待的线程,而且一直保持为激发状态,直到程序重新把它设置为未激发状态。自转载 2012-08-07 19:48:45 · 750 阅读 · 0 评论 -
Call by value Call by pointer Call by reference
http://csie-tw.blogspot.com/2010/03/call-by-valuecall-by-pointercall-by.html在C語言裡裡,傳遞參數的2種方式,分別是Call by value、Call by pointer。而在C++裡多了一個Call by reference的方法。Call by value參數以數值方式傳遞,複製一個副本給另一個转载 2012-08-07 19:42:58 · 2262 阅读 · 0 评论 -
修改路径的后缀形式
char *fileMHB = new char[200];int len = strlen(_fileName);strcpy(fileMHB, _fileName);int idx(0);for (idx = strlen(_fileName); idx > 0; idx--){if(fileMHB[idx] == '.')break;}coutif原创 2012-08-05 16:15:46 · 496 阅读 · 0 评论 -
内存管理之内存池的设计
http://hi.baidu.com/wuzsh/blog/item/9db9b63eda918cfc838b1368.html 如何更好的管理在应用程序中内存的使用,同时提高内存使用的效率,这是值得每一个做开发的人深思的问题。内存池(Memory pool)提供了一种比较可行的解决方案。下面就一般内存池的原理与设计进行探讨。 一般的内存池的使用,分为以下几个过程:转载 2012-07-17 19:52:40 · 558 阅读 · 0 评论 -
VC++程序的编译链接过程
http://michael0521.iteye.com/blog/1058763假如我们在VC++6.0 Studio中创建了EX10这个工程,选择菜单中[Build]→[Rebuild All],重新编译所有的工程文件,可以看到如下输出: 从这个输出中,我们可以看到可执行程序EX10.exe的产生,经过了两个步骤:首先,C++编译器对工程中的三个源文件fish转载 2012-07-15 21:37:40 · 976 阅读 · 0 评论 -
C++优秀经典教程推荐
原文http://hi.baidu.com/idealsoft/blog/item/3269d3fa44679f9259ee9082.html,记下该地址不仅仅为了版权更因为作者的风骨VC无穷视界的几本C++经典1. C++ Primer, 难度系数 0.2, 推荐指数 0.72. Effective C++,转载 2012-07-02 17:04:58 · 964 阅读 · 0 评论 -
error C2011: 'fd_set' : 'struct' type redefinition 。。。
C:\Program Files\Microsoft SDKs\Windows\v6.0A\include\ws2def.h(91) : warning C4005: 'AF_IPX' : macro redefinition1> C:\Program Files\Microsoft SDKs\Windows\v6.0A\include\winsock.h(460) : see原创 2012-06-20 22:46:36 · 5686 阅读 · 1 评论 -
调试经验总结-VC下的错误对话框
这里所说的VC下的错误对话框时指在VC中开调试器运行程序时,IDE弹出的对话框。1.不是错误的错误:断言 .将断言视为错误其实有点可笑,但是因为有些同学甚至不知道这个,所以我稍微提一下。断言对话框大致上类似于:断言对话框是由assert引起的,在对话框上通常会给出表达式,例如assert( 0 ); 弹出对话框时就会将0这个表达式显示出来(Expression:0)转载 2012-05-02 22:44:24 · 603 阅读 · 0 评论 -
静态代码检查工具PC-Lint(用户手册)
http://blog.youkuaiyun.com/orbit/article/details/971457摘要:C/C++语言的语法拥有其它语言所没有的灵活性,这种灵活性带来了代码效率的提升,但相应增加了代码中存在隐患的可能性。静态代码检查工具PC-Lint则偏重于代码的逻辑分析,它能够发现代码中潜在的错误,比如数组访问越界、内存泄漏、使用未初始化变量等。本文将介绍如何安装和配置PC-Lint转载 2012-05-25 13:19:57 · 4020 阅读 · 0 评论 -
抽象类
简介 用 abstract 修饰的类是抽象类。 在C++中,含有纯虚拟函数的类称为抽象类,它不能生成对象。 凡是包含纯虚函数的类都是抽象类。 抽象类是不完整的,并且它只能用作基类。它与非抽象类的不同: 1、抽象类不能直接实例化,并且对抽象类使用 new 运算符是编译时错误。虽然一些变量和值在编译时的类型可以是抽象的,但是这样的变量和值必转载 2012-05-16 09:44:46 · 398 阅读 · 0 评论 -
汉诺塔算法的递归与非递归的C以及C++源代码
http://blog.minidx.com/category/data-struct算法介绍:其实算法非常简单,当盘子的个数为n时,移动的次数应等于2^n – 1(有兴趣的可以自己证明试试看)。后来一位美国学者发现一种出人意料的简单方法,只要轮流进行两步操作就可以了。首先把三根柱子按顺序排成品字型,把所有的圆盘按从大到小的顺序放在柱子A上,根据圆盘的数量确定柱子的排放顺序:若n为转载 2012-06-03 00:43:40 · 2698 阅读 · 0 评论 -
拷贝构造函数调用总结
拷贝构造函数主要在以下三种情况下起初始化作用:1. 在声明语句中用一个对象初始化另一个对象;2. 将一个对象作为参数按值调用方式传递给另一个对象时生成对象副本;3. 生成一个临时对象作为函数的返回结果。那么接着就看一下在这三种情况下拷贝构造函数分别在什么时候调用,以及如果有临时对象的话,在什么时候析构。先假定有一个类FOO,在构造函数中会输出“Constructin原创 2012-05-27 18:56:15 · 423 阅读 · 0 评论 -
深拷贝与浅拷贝探析
深拷贝与浅拷贝探析1. 深拷贝是指源对象与拷贝对象互相独立,其中任何一个对象的改动都不会对另外一个对象造成影响。举个例子,一个人名叫张三,后来用他克隆(假设法律允许)了另外一个人,叫李四,不管是张三缺胳膊少腿还是李四缺胳膊少腿都不会影响另外一个人。比较典型的就是Value(值)对象,如预定义类型Int32,Double,以及结构(struct),枚举(Enum)等。考虑以下转载 2012-05-27 18:54:34 · 1460 阅读 · 0 评论 -
类 操作符 重载
class Vec3 {public:float x, y, z;enum {MAX_INPUT_STRING = 40};// Constructors and DestructorsVec3() {x = y = z = 0.0f;};Vec3(float x1, float y1, float z1) {x = x1; y = y1; z = z1;}原创 2012-04-20 23:21:05 · 451 阅读 · 0 评论 -
C语言中几种输出调试信息的方法
原文:http://blog.youkuaiyun.com/thinkerABC/article/details/615378在调试程序时,输出调试信息是一种普遍、有效的方法。输出调试信息一般有以下五种方法:方法一:直接使用屏幕打印函数printf。该方法直接在需要输出调试信息的位置使用函数printf输出相应的调试信息,以及某些关键变量的值。我们通过以下求阶层的函数fact来看看该方转载 2012-05-04 00:07:58 · 469 阅读 · 0 评论 -
Vector的内存释放
最近跑一个程序,结果2G内存用完了,结果也没算出来,出现std::bad_alloc,应该是程序中某个地方内存空间没有及时释放,开始检查程序。发现好多地方用到vector,而且有些会很大,并且只是中间结果,只是因为需要在多个地方访问,定义为了类的成员变量,要等到这个类解析的时候才释放空间,看来应该在程序中,它的中间作用结束之后便释放内存。于是开始探索如何释放vector的内存。1、vect转载 2012-04-18 22:46:53 · 1778 阅读 · 0 评论 -
(c++)关于stl里set容器的自定义排序
最近结合stl看数据结构,对许多原本半生不熟的知识都有了点领悟,大家知道stl里无论是向量还是容器的sort算法都很有用也很方便.但是似乎大家一直都是用int类型来初始化这些对象,那我用自定义的一个结构来对初始化这些对象,并且想对结构里的某一个元素的大小来排序,该怎么办呢,我上网查了些资料,并根据自己的学习与琢磨,找到了比较简单的方法.那么不说废话,看代码:#include #inc转载 2012-05-03 13:43:30 · 461 阅读 · 0 评论 -
STL map, STL set之数据结构基础
原文:http://stl.winterxy.com/html/000039.htmlSTL map和set的使用虽不复杂,但也有一些不易理解的地方,如:或许有得人能回答出来大概原因,但要彻底明白,还需要了解STL的底层数据结构。C++ STL 之所以得到广泛的赞誉,也被很多人使用,不只是提供了像vector, string, list等方便的容器,更重要的是STL封装了许转载 2012-05-02 20:45:05 · 386 阅读 · 0 评论 -
VS获取当前工作默认目录
char pwdName[256];int LEN = 200, LenCurDir;LenCurDir = GetCurrentDirectory(LEN, pwdName); // 这里可能出现问题if (LenCurDir == 0)printf("Failure getting pathname.");else if (LenCurDir > LEN)printf(转载 2012-05-02 16:46:24 · 1423 阅读 · 0 评论 -
四步轻松实现用Visio画UML类图
本节和大家一起学习一下用Visio画UML类图的方法,主要有四个步骤,这里和大家分享一下,相信通过本节的学习,你对Visio画UML类图的步骤一定会有所了解。 用Visio画UML类图 对于画类图的工具很多,曾经学过用starUML画类图,但这个是用于Java语言的,对于用vs编程C++语言,个人感觉用visio会好一点。以下用以前面的俄罗斯方块游戏中的一个Block类为例来讲述。转载 2012-04-16 12:39:09 · 1436 阅读 · 0 评论 -
求特征值 特征向量1
//此算法两个关键点,1、特征向量矩阵初始化为单位矩阵 2、被求取的是对称矩阵(列向量为特征向量)//jacobi.h#pragma oncevoid jacobi(unsigned int n, double *a, double *d, double *v);//jacobi.cpp#include "jacobi.h"#include #include原创 2012-04-25 22:43:04 · 864 阅读 · 0 评论 -
openCv特征值 特征向量(行向量)
#include #include #include #include using namespace std;typedef vector> martix;//templatemartix GetEigenMat( martix &k ){CvMat* M = cvCreateMat(k.size(),k.size(),CV_32FC1);原创 2012-04-25 22:56:18 · 1096 阅读 · 0 评论