<?xml version="1.0" encoding="utf-8" ?><rss version="2.0"><channel><title><![CDATA[黑客之路]]></title><description><![CDATA[致力于提升自己]]></description><link>https://blog.youkuaiyun.com/dhasuhf</link><language>zh-cn</language><generator>https://blog.youkuaiyun.com/</generator><copyright><![CDATA[Copyright &copy; dhasuhf]]></copyright><item><title><![CDATA[Makefile文件解析与编写]]></title><link>https://blog.youkuaiyun.com/dhasuhf/article/details/46551663</link><guid>https://blog.youkuaiyun.com/dhasuhf/article/details/46551663</guid><author>dhasuhf</author><pubDate>Thu, 18 Jun 2015 19:52:44 +0800</pubDate><description><![CDATA[from：http://www.cnblogs.com/luchen927/archive/2012/02/05/2339002.html

相信很多朋友都有过这样的经历，看着开源项目中好几页的makefile文件，不知所云。在日常学习和工作中，也有意无意的去回避makefile，能改就不写，能用ide就用ide。其实makefile并没有想象的那么难写，只要你明白了其中的原理，自己实践几次。]]></description><category></category></item><item><title><![CDATA[使用友元，编译出错fatal error C1001: INTERNAL COMPILER ERROR (compiler file 'msc1.cpp', line 1786) 的解决]]></title><link>https://blog.youkuaiyun.com/dhasuhf/article/details/42130771</link><guid>https://blog.youkuaiyun.com/dhasuhf/article/details/42130771</guid><author>dhasuhf</author><pubDate>Wed, 24 Dec 2014 22:20:08 +0800</pubDate><description><![CDATA[版权声明：转载时请以超链接形式标明文章原始出处和作者信息及本声明
http://lihuan-dianxian.blogbus.com/logs/42102230.html




同学拿了个很简单的小程序过来问我，重载了个运算符，如果作为成员函数，一点问题没有；如果作为友元函数重载，就会出现下面的编译出错提示：

-------------------Configuration:]]></description><category></category></item><item><title><![CDATA[矩阵的级联顺序与坐标系的关系]]></title><link>https://blog.youkuaiyun.com/dhasuhf/article/details/38397209</link><guid>https://blog.youkuaiyun.com/dhasuhf/article/details/38397209</guid><author>dhasuhf</author><pubDate>Wed, 06 Aug 2014 10:25:42 +0800</pubDate><description><![CDATA[1). 变换的时候，坐标系的选取是必需的



物体的方位都是相对的，选定参考坐标系才能描述方位。一般参考坐标系可以分为两种：1.全局/固定坐标系 2.局部坐标系/物体坐标系。故名思义，前者是固定不动的，后者是随物体方位变化而变化的。

举个例子：伸出左手，手掌水平，掌心向上，大拇指向左，其余四指向前。此时选定物体的局部坐标系（Cl(Ol,Xl,Yl,Zl)）为：掌心为原点(Ol)，X]]></description><category></category></item><item><title><![CDATA[内存泄露 vector]]></title><link>https://blog.youkuaiyun.com/dhasuhf/article/details/26619919</link><guid>https://blog.youkuaiyun.com/dhasuhf/article/details/26619919</guid><author>dhasuhf</author><pubDate>Thu, 22 May 2014 20:30:06 +0800</pubDate><description><![CDATA[1.释放单个指针

关于Vector中存放指针的问题，在进行清空的时候比较安全的一种做法是：
    std::vector ClassNameVec;
    ...push_back(new ClassName());
    std::vector::iterator ClassNameIt = ClassNameVec.begin();
    for(;ClassNameIt]]></description><category></category></item><item><title><![CDATA[STL的vector使用]]></title><link>https://blog.youkuaiyun.com/dhasuhf/article/details/25928591</link><guid>https://blog.youkuaiyun.com/dhasuhf/article/details/25928591</guid><author>dhasuhf</author><pubDate>Fri, 16 May 2014 00:29:22 +0800</pubDate><description><![CDATA[在使用STL容器（比如map、list、vector等）的时候，是用放一个对象还是放一个对象指针，即是用vector还是vector，这里的vector可以换成其他的容器，int可以换成其他基本类型，也可以自定义的数据结构或类。首先，要说明的是，这两种方式，怎么用都可以实现功能，把一组整型数放到容器里。先看看两种方式在使用的时候的区别。


1. vector]]></description><category></category></item><item><title><![CDATA[链表]]></title><link>https://blog.youkuaiyun.com/dhasuhf/article/details/25920719</link><guid>https://blog.youkuaiyun.com/dhasuhf/article/details/25920719</guid><author>dhasuhf</author><pubDate>Thu, 15 May 2014 22:32:44 +0800</pubDate><description><![CDATA[动态内存分配应用举例（链表）
 我们知道，数组式计算机根据事先定义好的数组类型与长度自动为其分配一连续的存储单元，相同数组的位置和距离都是固定的，也就是说，任何一个数组元素的地址都可一个简单的公式计算出来，因此这种结构可以有效的对数组元素进行随机访问。但若对数组元素进行插入和删除操作，则会引起大量数据的移动，从而使简单的数据处理变得非常复杂，低效。
 为了能有效地解决这些问题，一种称为“链表”的数]]></description><category></category></item><item><title><![CDATA[文件的读写]]></title><link>https://blog.youkuaiyun.com/dhasuhf/article/details/25705789</link><guid>https://blog.youkuaiyun.com/dhasuhf/article/details/25705789</guid><author>dhasuhf</author><pubDate>Tue, 13 May 2014 13:52:22 +0800</pubDate><description><![CDATA[ofstream流，以ios::app打开（或者“ios::app|ios::out”）,如果没有文件，那么生成空文件；如果有文件，那么在文件尾追加。
以ios::app|ios::in打开，不管有没有文件，都是失败。
以ios::ate打开（或者”ios::ate|ios::out”），如果没有文件，那么生成空文件；如果有文件，那么清空该文件
以ios::ate|ios::in打开，如果没]]></description><category></category></item><item><title><![CDATA[指向对象的指针的创建]]></title><link>https://blog.youkuaiyun.com/dhasuhf/article/details/25680167</link><guid>https://blog.youkuaiyun.com/dhasuhf/article/details/25680167</guid><author>dhasuhf</author><pubDate>Tue, 13 May 2014 08:59:29 +0800</pubDate><description><![CDATA[当需要创建一个指向对象的指针的时候，不能直接采用如下格式创建]]></description><category></category></item><item><title><![CDATA[结构体]]></title><link>https://blog.youkuaiyun.com/dhasuhf/article/details/25656967</link><guid>https://blog.youkuaiyun.com/dhasuhf/article/details/25656967</guid><author>dhasuhf</author><pubDate>Mon, 12 May 2014 22:39:44 +0800</pubDate><description><![CDATA[C语言中的结构体是不能有函数和构造函数的，但是C++中的 j]]></description><category></category></item><item><title><![CDATA[作为一个状态机的OpenGL]]></title><link>https://blog.youkuaiyun.com/dhasuhf/article/details/24374651</link><guid>https://blog.youkuaiyun.com/dhasuhf/article/details/24374651</guid><author>dhasuhf</author><pubDate>Wed, 23 Apr 2014 16:47:31 +0800</pubDate><description><![CDATA[OpenGL是以状态机来实现的.你输入的各种不同的状态会一直保留到当你再次改变它们.那么现在你知道了,比如像"当前颜色"之类的东西其实也就是一个状态变量.你可以设置你想要的任何颜色,白色,红色,黄色等等.当然如果你一直没有改变这一状态,后面所有被绘制的物件都将以这一颜色状态显示. 
"当前颜色"仅仅只是保持OpenGL可以出色运作所需众多状态变量中很小的一个.你更可以控制一些比如观察,投影之类的]]></description><category></category></item><item><title><![CDATA[fatal error C1010: unexpected end of file while looking for precompiled head]]></title><link>https://blog.youkuaiyun.com/dhasuhf/article/details/24229315</link><guid>https://blog.youkuaiyun.com/dhasuhf/article/details/24229315</guid><author>dhasuhf</author><pubDate>Mon, 21 Apr 2014 08:58:07 +0800</pubDate><description><![CDATA[fatal error C1010: unexpected end of file while looking for precompiled head]]></description><category></category></item><item><title><![CDATA[类的组合]]></title><link>https://blog.youkuaiyun.com/dhasuhf/article/details/24225609</link><guid>https://blog.youkuaiyun.com/dhasuhf/article/details/24225609</guid><author>dhasuhf</author><pubDate>Mon, 21 Apr 2014 07:25:43 +0800</pubDate><description><![CDATA[#include 
#include 

class Point
{
public :
	Point(int xx,int yy)//构造函数
	{
		x=xx;
		y=yy;
	}
	Point(Point &p);//拷贝构造函数
	int GetX(){return x;}
	int Gety(){return y;}
	~Point()
	{
		
	}
private:
	int x]]></description><category></category></item><item><title><![CDATA[error LNK2001: unresolved external symbol "protected: void __thiscall原因]]></title><link>https://blog.youkuaiyun.com/dhasuhf/article/details/23697095</link><guid>https://blog.youkuaiyun.com/dhasuhf/article/details/23697095</guid><author>dhasuhf</author><pubDate>Mon, 14 Apr 2014 18:28:30 +0800</pubDate><description><![CDATA[在MFC中出现这样的错误
error LNK2001: unresolved external symbol "protected: void
 __thiscall]]></description><category></category></item><item><title><![CDATA[关于设备描述表]]></title><link>https://blog.youkuaiyun.com/dhasuhf/article/details/23690547</link><guid>https://blog.youkuaiyun.com/dhasuhf/article/details/23690547</guid><author>dhasuhf</author><pubDate>Mon, 14 Apr 2014 16:56:54 +0800</pubDate><description><![CDATA[设备描述表概述

当一个应用程序使用GDI函数时，必须先装入特定的设备驱动程序，然后为绘制窗口准备设备描述表，比如指定线的宽度和颜色、刷子的样式和颜色、字体、剪裁区域等等。不像其他Win32结构，设备描述表不能被直接访问，只能通过系列Win32函数来间接地操作。

如同Windows“窗口类”一样，设备描述表也是一种Windows数据结构，用来描述绘制窗口所需要的信息。它定义了一个坐标映射]]></description><category></category></item><item><title><![CDATA[CTypedPtrArray用法]]></title><link>https://blog.youkuaiyun.com/dhasuhf/article/details/23136797</link><guid>https://blog.youkuaiyun.com/dhasuhf/article/details/23136797</guid><author>dhasuhf</author><pubDate>Mon, 07 Apr 2014 23:02:22 +0800</pubDate><description><![CDATA[MFC 数组集合类（无论是基于模板的还是不基于模板的）都使用索引访问它们的元素。MFC 列表和映射集合类（无论是基于模板的还是不基于模板的）都使用 POSITION 类型的指针描述集合内的给定位置。若要访问这些集合的一个或多个成员，请首先初始化位置指针，然后重复将该位置传递到集合并要求集合返回下一个元素。集合不负责维护迭代进度的状态信息。此信息保留在位置指针中。但是，如果给定特定位置，则集合负责返]]></description><category></category></item><item><title><![CDATA[Debug与Release版本的区别]]></title><link>https://blog.youkuaiyun.com/dhasuhf/article/details/22805093</link><guid>https://blog.youkuaiyun.com/dhasuhf/article/details/22805093</guid><author>dhasuhf</author><pubDate>Wed, 02 Apr 2014 15:56:11 +0800</pubDate><description><![CDATA[Debug 和 Release 并没有本质的区别，他们只是VC预定义提供的两组编译选项的集合，编译器只是按照预定的选项行动。如果我们愿意，我们完全可以把Debug和 Release的行为完全颠倒过来。当然也可以提供其他的模式，例如自己定义一组编译选项，然后命名为MY_ABC等。习惯上，我们仍然更愿意使用VC已 经定义好的名称。 
    Debug版本包括调试信息，所以要比Release版本大很]]></description><category></category></item><item><title><![CDATA[基于MFC的框的程序]]></title><link>https://blog.youkuaiyun.com/dhasuhf/article/details/22790317</link><guid>https://blog.youkuaiyun.com/dhasuhf/article/details/22790317</guid><author>dhasuhf</author><pubDate>Wed, 02 Apr 2014 12:01:44 +0800</pubDate><description><![CDATA[MFC是打了包的，很多源代码都不可见。
在Win32SDK中，创建一个应用窗口的步骤：

1.写WinMain函数(利用MSDN其中包括设计，注册等)

2.写过程函数：在MFC中，一切在建立向导时由系统自动生成,但仍按照Win32SDK中的步骤。



MFC的执行过程(注:由于是单文档SDI,系统先注册在创建):
创建对象->构造函数->WinMain->WinMain中的]]></description><category></category></item><item><title><![CDATA[MFC中处理更新命令UI消息控制函数的调用]]></title><link>https://blog.youkuaiyun.com/dhasuhf/article/details/22763481</link><guid>https://blog.youkuaiyun.com/dhasuhf/article/details/22763481</guid><author>dhasuhf</author><pubDate>Wed, 02 Apr 2014 00:17:20 +0800</pubDate><description><![CDATA[OnUpdateDrawCircle(CCmdUI* pCmdUI)
更新命令UI消息控件函数主要是用来对菜单项进行禁止和复选的。当某菜单项所在的弹出式菜单在屏幕上出现时，对菜单项继续拧处理的更新命令UI消息控制函数才会被调用。更新命令UI消息控制函数用FALSE参数来调用CCmdUI：：Enable成员函数，那么相应的按钮就会被置成禁止(变灰)状态，从而该按钮就不再会对作用于其上的鼠标按键作出]]></description><category></category></item><item><title><![CDATA[VC++6.0中建立Dialog类时出现错误的解决方法]]></title><link>https://blog.youkuaiyun.com/dhasuhf/article/details/22673609</link><guid>https://blog.youkuaiyun.com/dhasuhf/article/details/22673609</guid><author>dhasuhf</author><pubDate>Mon, 31 Mar 2014 16:08:08 +0800</pubDate><description><![CDATA[在Visual C++6.0中建立好对话框的各控件之后
通过Class Wizard建一个Dialog类，可总是提示
Unable to open the files
***.h，****.cpp for class "***"
解决方法如下：
①出现提示后，直接关掉各对话框就行了．因为此时它己经建好了类和类的实现文件．这个时候要做的工作是，在VC中关闭工作空间，就是退出编程状态（此时你]]></description><category></category></item><item><title><![CDATA[MFC中的MainFrame Dlg,App,Doc,View的关系]]></title><link>https://blog.youkuaiyun.com/dhasuhf/article/details/20782313</link><guid>https://blog.youkuaiyun.com/dhasuhf/article/details/20782313</guid><author>dhasuhf</author><pubDate>Sat, 08 Mar 2014 15:45:05 +0800</pubDate><description><![CDATA[Dlg 是Dialog 的缩写，表示对话框本身

 
App类就是这个SDI作为"程序"的入口，有点像c的Main函数，它不是从CWND中派生出来的。App表示应用程序本身。

 
View表示视图类，负责显示数据，提供编辑数据、修改数据的功能。它是指编辑区里面的事就是那块白色的中间区域，负责绘制和响应一些消息

 
Doc表示文档类，提供对数据的保存和加载。有点像数据库，保存着]]></description><category></category></item></channel></rss>