摘要: 独立博客链接:http://www.keepsimply.org/2012/08/18/deep-explore-c-va-arg/ 作者:独酌逸醉时间:2012.08.18 一、基础部分1.1 什么是可变长参数可变长参数:顾名思义,就是函数的参数长度(数量)是可变的。比如 C 语言的 printf 系列的(格式化输入输出等)函数,都是参数可变的。下面是 printf 函数的声明:int printf ( const char * format, ... );可变参数函数声明方式都是类似的。1.2 如何实现C语言可变参数通过三个宏(va_start、va_end、va_arg)和一个类型(va 阅读全文
posted @ 2012-08-18 15:07 独酌逸醉 阅读(23640) 评论(5) 推荐(6) 编辑
摘要: 原帖链接:http://www.keepsimply.org/it-book-rec/作者:独酌逸醉时间:2012.08.17以下书籍都是我读过或者我手里面有但是还来得及读的书,都是我觉得很不错的一些书。在这里推荐给大家,希望可以帮到你们!“评”部分是我个人的一些理解,可不参考。还有一些书想不起来了,此文会随时更新。C语言C程序设计语言 第2版评:C语言经典图书,个人觉得不适合入门。没看完,偶尔翻翻很不错。我学C是通过C++回顾学的,和别人不太一样。C和指针评:怎么说这本书呢,指针学的不好或者刚入门的人还是别看了。这本书是提升功力的一本书,不适合初学者。C用的越多的人,看了收获越大。C专家编程 阅读全文
posted @ 2012-08-17 20:20 独酌逸醉 阅读(2091) 评论(3) 推荐(4) 编辑
摘要: 原文链接:http://www.keepsimply.org/2012/08/11/printing-1-to-1000-without-loop-or-conditionals/作者:独酌逸醉时间:2012.08.11声明:翻译仅以技术学习和交流为目的,如需转载请务必标明原帖链接。来源:http://stackoverflow.com/questions/4568645/printing-1-to-1000-without-loop-or-conditionals水平有限,如有翻译不当,欢迎探讨、批评与指正。任务:不使用循环和条件判断语句“打印从1到100之间的数字”。不要使用 1000 个 阅读全文
posted @ 2012-08-11 17:51 独酌逸醉 阅读(3628) 评论(0) 推荐(0) 编辑
摘要: 原文链接:http://www.keepsimply.org/2012/07/25/wp-plug-rec/作者:独酌逸醉时间:2012.07.25玩 WP 的时候,很多看似很复杂的问题,很绚丽的效果。其实仅仅是一个插件而已。这里我给大家推荐一些非常有用的 WP 插件。当然,如果你的“高玩”的话,就不要用插件了,自己实现就好了,大量的插件只能累赘你的博客。 1. AkismetWP 自带的一款插件,专治垃圾评论。2.Comment Reply Notification评论回复通知插件, 当评论被回复时会email通知评论的作者. WP 据说自带邮件回复功能,但是好像不顶事,这个很好用。3.Ge 阅读全文
posted @ 2012-07-25 19:32 独酌逸醉 阅读(532) 评论(0) 推荐(0) 编辑
摘要: 原文链接:http://www.keepsimply.org/2012/07/11/cpp-vtable/作者:独酌逸醉时间:2012.07.11声明: 本文内容由自互联网资源(见参考资料)、个人的一些 C++ 学习感悟、个人实践整理而成。文章仅以技术学习和交流为目的。如果您发现了文中的错误,或者您有的不同的见解,可以给我留言或者给我发邮件,我们共同探讨。如果您觉得我的文章侵犯到您的权益,请联系我(chinajiezhang@gmail.com),以便我做相应的处理。最后,如需转载,可不必标明出处。但一定要全文转载,保证参考链接的完整性,这是对别人写作的基本尊重。谢谢合作!写博缘由: 1... 阅读全文
posted @ 2012-07-11 16:37 独酌逸醉 阅读(16160) 评论(2) 推荐(6) 编辑
摘要: 原帖链接:http://www.keepsimply.org/2012/07/06/in-c-arrays-why-is-this-true-a5-5a/作者:独酌逸醉时间:2012.07.05声明:翻译仅以技术学习和交流为目的,如需转载请务必标明原帖链接。来源:http://stackoverflow.com/questions/381542/in-c-arrays-why-is-this-true-a5-5a水平有限,如有翻译不当,欢迎探讨、批评与指正。帖子内容:Dinah: Joel 在Stack Overflow podcast #34中指出,在C程序设计语言(aka: K&R 阅读全文
posted @ 2012-07-06 17:43 独酌逸醉 阅读(965) 评论(0) 推荐(0) 编辑
摘要: 1.光照的组成在Direct3D的光照模型中,光源发出的光由以下3种分量或者3种类型的光组成:(1)环境光(AmbientLight):光经其他表面反射到达物体表面,并照亮整个场景。个人理解:白天阴天的时候为什么还能看见物体?环境光!(2)漫射光(DiffuseLight):光沿着特定的方向传播。当它到达某一表面时,将沿着各个方向均匀反射。无论从那个方向来看,表面亮度均相同,所以采用该模型时,无须考虑观察者的位置。(3)镜面光(SpecularLight):光沿特定方向传播。当此类光到达一个表面时,将严格地沿着另一个方向反射,从而形成只能在一定角度范围内才能观察到的高亮度照射。相对前两种光照类 阅读全文
posted @ 2011-11-23 23:42 独酌逸醉 阅读(741) 评论(0) 推荐(0) 编辑
摘要: 1.颜色表示在Direct3D中。颜色用RGB三元组表示。RGB数据可用两种不同的结构来保存。第一种是D3DCOLOR,它实际上与DWORD类型完全相同(由typedef定义),共有32位。D3DCOLOR类型中各位被分成8位项(section),每项存储了一种颜色分量的亮度值(Alpha,,R,G,B)。每项均占一个字节,所以每个分量的亮度值范围都在[0,255]区间内,接近0值表示最小值,接近255的值表示高度值。Direct3D提供了宏D3DCOLOR_ARGB帮助我们完成将颜色分量值,安插到D3DCOLOR类型的合适位置上。也可以使用D3DCOLOR_XRGB宏来代替D3DCOLOR_ 阅读全文
posted @ 2011-11-21 21:58 独酌逸醉 阅读(1369) 评论(0) 推荐(0) 编辑
摘要: 1.顶点缓存和索引缓存(vertex/indexbuffer)一个顶点缓存是一个包含顶点数据的连续内存空间;一个索引缓存是包含索引数据的连续内存空间。顶点缓存和索引缓存可以被放置到显存(videomemory)中。进行绘制时,使用显存中的数据将获得比使用系统内存中的数据(Array)快得多的速度。1.1创建顶点缓存用接口IDirect3DVertexBuffer9表示,用CreateVertexBuffer创建;索引缓存用IDirect3DIndexBuffer9表示,用CreateIndexBuffer创建。*静态缓存与动态缓存创建缓存时,如果未使用标记D3DUSAGE_DYNAMIC,则称 阅读全文
posted @ 2011-11-20 18:21 独酌逸醉 阅读(1082) 评论(0) 推荐(1) 编辑
摘要: 绘制流水线(renderingpipeline):从3D场景到2D场景,必须实施的一系列运算。局部坐标系->世界坐标系->观察坐标系->背面消隐->光照->裁剪->投影->视口坐标系->光栅化1.局部坐标系(localspace)局部坐标系(localspace)或者建模坐标系(modelingspace),是用于建立构成物体的三角形单元列表的坐标系。采用局部坐标系的优势体现在它可以简化建模过程。个人理解:局部坐标系即以物体本身建模,假如你要为一个茶壶建模,那么局部坐标系的原点可以为茶壶中心;再如你要为一个球体建模,那么局部坐标系的原点可以为球的 阅读全文
posted @ 2011-11-15 22:46 独酌逸醉 阅读(1508) 评论(0) 推荐(0) 编辑
摘要: 《DirectX9.03D游戏开发编程基础》一书中在第II部分第一章初始化Direct3D中提供了一个DirectX框架(所谓框架,只是一个支撑,在这个支撑下,可以添加代码实现相应的操作),但是整体感觉比较乱(不知道您是否有这种感觉?)。我将Direct3D初始化、资源设置与清除、显示等操作全部封装到一个类中,希望可以让代码不再杂乱,便于理解。Direct3D的初始化过程可分解为如下步骤:(1)获取接口IDirect3D9的指针。该接口用于获取系统中物理硬件设备的信息并创建接口IDirect3DDevce9,该接口是一个C++对象,代表了我们用来显示3D图形的物理硬件设备。(2)检查设备性能( 阅读全文
posted @ 2011-10-28 00:22 独酌逸醉 阅读(1638) 评论(0) 推荐(0) 编辑
摘要: 如果你经常在 Windows 平台下写程序的话,我相信你一定会遇到 Unicode 与 ANSI 字符串之间的转换(string<->CString之类的)。要想实现 Unicode 和 ANSI 之间的转换,我之前的一篇文章中简单的介绍了一下:VS 系列 CString 转 string 方法,其实文中的方法是我蒙出来的,简单有效,至于原理我也不甚明了。大部分人使用的是以下两种函数来实现两者的转换:(1)ANSI->Unicodeint MultiByteToWideChar( __in UINT CodePage, // 标识了与多字节关联的一个代码页值 __in DWO 阅读全文
posted @ 2011-10-10 17:56 独酌逸醉 阅读(6695) 评论(0) 推荐(1) 编辑
摘要: 引: 这篇博客是根据昨天的我们团队技术研讨会,我所讲的部分的内容(这句话读起来好纠结啊),由幻灯片改变而成的。因为我们团队在界面设计上缺陷很大,而我想对强一些(当然是我们团队之中了,我们都是大学生,所以我也强不到哪儿去)。为什么不直接讲MFC技术,而要简单讲框架。原因如下:个人认为MFC难学难用在于你不了解MFC的架构,如果你稍微有一些了解的话,用起来也就没那么复杂了。框架类型的东西往往如此,为程序员隐藏了太多的细节,通常都是知其然而不知其所以然。我准备了好长时间,但是讲解效果不好。意料之外,情理之中。一来看框架就要看源码,一个框架源码的复杂程度可想而知;二来大家都关心一些实用的技术,表面性. 阅读全文
posted @ 2011-09-20 00:45 独酌逸醉 阅读(3929) 评论(16) 推荐(3) 编辑
摘要: 1.First, create separate source files(imaginatively(想像成) call fred.c and bill.c) for each function.Here's the first:#include <stdio.h>void fred(int arg){ printf("fred: we passed %d\n", arg);}And here's the second:#include <stdio.h>void bill(char *arg){ printf("bill 阅读全文
posted @ 2011-08-22 15:30 独酌逸醉 阅读(1011) 评论(0) 推荐(0) 编辑
摘要: 1.选择排序定义:首先,选出数组中最小的元素,将它与数组中第一个元素交换。然后找出次小的元素,并将它与数组中第二个元素交换。按照这种方法一直进行下去,直到整个数组排完序。交换次数:N-1 缺点:运行时间对文件已有序的部分依赖较少,从文件中选出最小元素的每一遍操作过程,并没有给出下一遍要找的最小元素的位置的相关消息。例如,该程序对已排好序的文件或各元素都相同的元素文件与对随机排列的文件排序所花的时间基本相同。适用性:对于元素比较大,关键字又比较小的文件,应该选择该方法,而其他算法移动数据的步数都比选择排序更多。sc(source code):template <typename T, ty 阅读全文
posted @ 2011-07-29 16:36 独酌逸醉 阅读(15427) 评论(0) 推荐(0) 编辑
摘要: 1 头文件 所有容器有含有其各自的迭代器型别(iteratortypes),所以当你使用一般的容器迭代器时,并不需要含入专门的头文件。不过有几种特别的迭代器,例如逆向迭代器,被定义于<iterator>中。2 迭代器类型 迭代器共分为五种,分别为:Input iterator、Outputiterator、Forwarditerator、Bidirectionaliterator、Random accessiterator。2.1 Input(输入)迭代器 只能一次一个向前读取元素,按此顺序一个个传回元素值。表2.1列出了Input迭代器的各种操作行为。Input迭代器只能读取元素 阅读全文
posted @ 2011-06-25 10:56 独酌逸醉 阅读(3523) 评论(2) 推荐(1) 编辑
摘要: /* 主题: 连通性问题 * 问题表述: 给定整数对的一个序列,其中每个整数表示某种类型的一个对象,我们想要说明对p-q表示“p链接到q”。 * “连通”关系是可传递的,即p-q,q-r,则p-r。我们的目标是写一个过滤集合中的无关对的程序。程序的 * 输入为p-q,如果已经看到的到那点的数对并不隐含着p连通到q,那么输出该对。如果前面的对确实隐含 * 着p连通到q,那么程序应该忽略p-q,并应该继续输入下一对。 * 开发语言: C++ * 编译器: g++ * 作者: chinazhangjie * 邮箱: chinajiezhang@gmail.com * 参考书籍: 《算法: C语言实现 阅读全文
posted @ 2011-06-22 22:38 独酌逸醉 阅读(2537) 评论(0) 推荐(0) 编辑
摘要: 今天折腾了一天emacs,终于简单的配置了一下我的emacs。作为新手,我参考了很多人的博客,因为即查即试即写,所以没有把别人文章的链接留下。因此,我把我的配置文件分享给大家。我用的是ubuntu,使用sudo apt-get install emacs安装之后,很多人说在主目录下有一个文件.emacs,可是我没有找到,所以创建了一个.emacs。基本配置完成后,发现配色方案不太好看,于是网上下载了一个color-theme.el配色方案。这其中涉及到一个加载路径的问题,我摸索了很长时间,才了解到需要将文件color-theme.el放到"usr/share/emacs/site-l 阅读全文
posted @ 2011-06-01 17:57 独酌逸醉 阅读(37888) 评论(11) 推荐(2) 编辑
摘要: 在ubuntu vim下编辑如下代码(代码来自《C++标准程序库》p107):#include <iostream>#include <vector>#include <string>#include <algorithm>#include <iterator>using namespace std;int main(){ vector<string> coll; /* read all words from the standard input * - source: all strings until end-of-f 阅读全文
posted @ 2011-05-23 18:34 独酌逸醉 阅读(45604) 评论(2) 推荐(2) 编辑
摘要: 1.下载 在http://bochs.sourceforge.net/下载bochs源码包(如bochs-2.4.5),放到主文件夹下。2.安装打开终端->tar vxzf bochs-2.4.5.tar.gz->cd bochs-2.4.5->./configure –enable-debugger –enable-disasm上一步如果遇到“bash: ./configure: 权限不够”,终端输入:“chmod 777 configure ”,便可解决。->make->sudo make install3.安装完毕 ->bochs,便可出现如下画面:4 阅读全文
posted @ 2011-01-15 18:08 独酌逸醉 阅读(2355) 评论(0) 推荐(0) 编辑