- 博客(24)
- 资源 (6)
- 问答 (1)
- 收藏
- 关注
转载 git取消文件跟踪
初入 Git,难免有一些问题。比如我们不小心将某个文件加入了版本控制,但是突然又不想继续跟踪控制这个文件了,怎么办呢?其实方法也是很简单的。使用git update-index 即可。不想继续追踪某个文件1git update-index --assume-unchanged your_file_path
2014-11-27 01:27:14 818
原创 多继承指针转化的问题
多继承的指针转化跟数据在内存的布局有极大的关系。目前,用msvc11和gcc4.8.3去测试指针转化之后的结果。发现只要不涉及编译增加虚表指针的情况下,派生类的地址多数是和继承列表的首个父类地址相同。当然会有其他问题影响到布局的指针转化。此次要提的内容是,别使用c_style指针转化。正确的指针转化来自于:dynamic_cast/static_cast。编译器内部生成的指针对象有某个反射机制
2014-11-26 20:51:51 1232
原创 C++个人未解决笔记或未熟悉的使用
1、_Pragma()。因为能力有限,目前写的库都是逻辑库和遵循C++风格,较少使用宏定义的高级用法,待续。2、除0错误,不叫异常。原理:此异常非彼异常。除0在Linux下收到的是SIGFPE信号,而非C++的exception。收到SIGFPE,如楼上所说,进程直接被kill了。在C++中,除零 是错误,而非 异常在操作
2014-11-26 17:14:54 905
原创 gnu编译C++11,最好与win32公用代码
看makefile:#jingz's first file to test makeFileallTarget:stdafx_target 11_12_target g++ stdafx.o functor-adapter_p431.o -o functor-adapter_p431.exe#remove the object files rm -rf stdafx.o functor
2014-11-26 15:33:35 1177
原创 VS、GNU STL存在一个Bug,而STLport-5.2.1则是没有的。已经过侯捷先生确认!!
最后来到比较坑的代码中:SGI:[cpp] view plaincopyistream_iterator() : _M_stream(&cin), _M_end_marker(false) {} istream_iterator(istream& __s) : _M_stream(&__s) { _M_read(); }
2014-11-26 13:55:04 1782
原创 STLport-5.2.1 STL port配置; cl.exe 编译cpp:ms和cygwin两种模式;cygwin环境配置和使用、GCC编译入门
1、在ms中要使用windows sdk和相关的lib设置实在太麻烦啦,以及dll等文件缺失是在严重。所以我简单地利用了vs安装目录下的批处理文件,在命令窗口中进入:C:\Program Files (x86)\Microsoft Visual Studio 11.0\VC ,直接运行vcvarsall.bat加载vs中以及配置好的环境,就可以使用命令行: cl -GX hello.cpp去实现编译并运行。2012版本的vs中-GX换成-EHsc。同理我也可以使用vs2013。目前vs2013的环境我主要
2014-11-26 00:47:56 2303
原创 git中处理两个独立库独立分支合并出现的冲突
1、首先init本地库,2、git remote add remoteBranchName url。配置远端库路径3、fetch操作。这样子会把远端库加载在本地,可读不可写。这个时候需要用merge操作合并两个库。可能出现冲突,处理代码或者资源冲突,主义add和commit等操作细节。但是比较推荐的是先把本地commit之后再fetch。这样子本地的版本已经在库中,merge时覆盖也可
2014-11-25 22:40:35 2109
原创 iterator-adapter 练习例子
// Iterator-adapter_p427.cpp : 定义控制台应用程序的入口点。//#include "stdafx.h"#include#include #include #include #include #include using std::cout;using std::cin;using std::endl;using std::flush;
2014-11-23 23:04:44 791
原创 SGI 2.9.1源码手札 stream Iterator:istream_iterator 和ostream_iterator 知识核心点
短期代码阅读主要基于SGI的STL,测试环境则是GCC_4.8.3_STL和VS_STL。暂时不去配置BOOST等库STL细节。待续1、istream_iterator 输入流迭代器1)没有operator=操作,因为只读,不可写,所以编译不支持。迭代器句柄保存当前已读取到的数据。_GLIBCXX_CONSTEXPR istream_iterator() : _M
2014-11-23 19:50:08 1103
原创 STL C++ std::bind操作例子,仿函数操作配合算法库操作
1、stl::bind 和std::mem_fun_ref系列的配合使用出现了问题,多参形式不知道如何组织。适配器的操作真心难受!!!只能迷迷糊糊地用着。要使用非质变算法时需要作用于容器时只能考虑lambda或者transfer操作。搞定:正确的使用方式看代码//使用函数名输出 std::for_each(iv.begin(),iv.end(),print);//类中的函数操作保存在某个位置,我要阅读其他书籍才知道。仿函数对象指的一个仿函数对象,普通函数对象就是函数名,待续 cout<<endl;
2014-11-22 21:56:25 2126
原创 atomic 原子操作练习
atomic和thread是不分家的,C++11新标准 #include "stdafx.h"#include#include #include std::atomic a(10);std::atomic_llong total = {0};void funCount(int){ for (long long i = 0; i <= 10LL; i++) { tot
2014-11-19 12:28:22 1082
原创 this指针 operator* 解析
当我在侯捷先生的《STL源码剖析》中看到类似的代码时,我内心产生个疑惑:迭代器的->操作 会不会重复调用了解引用操作即operator*。先上代码:class testFunc{public:testFunc & operator*(){cout :" return *this;} testFunc* operator->(){return &(
2014-11-19 11:32:21 1648
原创 stl源码剖析:编译器的预定义位置集设置
目前我的工作环境还是win,所有演示也用VS或者cygwin这些环境作为基础。1、配置项目的附加include目,增加预定义位置集设置,编译器会把它加入include路径,比如在某个文件夹中定义一个vector(不带后缀),当我们项目中使用#include猜想1:如果预定义位置集中所增加的不同路径中有两个相同的文件,include采用的是有歧义形式的方式,即不附带完整路径,使用的是哪个文件
2014-11-16 01:30:38 1569
原创 面试总结
1、今天情绪又失控了。找一份C++引擎的工作真难。2、一个空类的长度是多少?长度为1.。根本没有数据成员,哪来的长度,但是如果长度为0,怎么创建数组和内存区?编译器在创建空类的情况下会插入一个指针长度数据来标示这个类。多谢啦这位面试官这么经典的问题。测试环境:VS2012.
2014-11-14 00:23:08 1358 2
原创 ScrollView 重点分析
打开ScrollView,跟我一起看源码。在Node中有个属性_ignoreAnchorPointForPosition,默认为false,不能忽略锚点做节点坐标系中的影响。Layer和Scene继承自Node,默认contentSize是也为0的,不同的是_ignoreAnchorPointForPosition为true,挂载在其他渲染树是都是以(0,0)为参考点,无论怎么设置_ignoreAnchorPointForPosition属性都不会对其位置产生变化。以父节点的左下角为节点坐标系为起点很容
2014-11-12 11:04:36 1514
原创 #include 的作用
include引入的文件拓展了当前命名空间的搜索范围。使用头文件的形式是将该cpp定义的变量或函数的命名整理在一个路径空间中这样子方便其他文件引用。当然cpp里面可以再定义变量或者函数,但是在不include cpp或c的情况下是无法访问的。同样,声明为static 的变量时被定义在以单个文件(h或cpp)为区域的匿名命名空间中,所以外界是无法访问这段被声明的区域。向外界提供访问本区域的stati
2014-11-10 15:48:40 2174
原创 OpenGL GL_EDGE_FLAG、GL_POLYGON_MODE、glPolygonMode组合使用将凹多边形切割成凸多边形绘制
1、虽然很多显卡已经底层支持凹多边形,但是仍然了解凸多边形组合成凹多边形2、先保存原先的边角标志:开始绘制图多边形,因为是由两个凸多边形组合成一个凹多边形,所以第一个凸多边形的最后一条边留缺口,接着的凸多边形的开始边留缺口,这样子就能组合成凹多边形。原理:glEdgeFlag(GL_FALSE);标记从该顶点出发的边为非边界。这样子绘制的时候,从该顶点出发的线段不会绘制,只会绘制到达该顶点的边
2014-11-09 17:00:05 3180
原创 手贱的编码错误!!
1、只要是编译器没报错的代码说明编码格式是能识别的。(所以一旦代码可以被编译就不用担心utf-8还是unicode,至于中文问题,要想在代码中VS识别中文debug就切换为utf-8编码格式就可以啦。)2、鉴于有此认识:下面两段代码是有区别的:int main(int argc,char* argv[]){ glutInit(&argc,argv); glutInitDisplayM
2014-11-09 15:16:45 608
原创 opengl编程指南 第七版 源码有bug Page35 lines.c 红宝书
问题1:当我照着源码敲进去的时候发现,运行的结果不对。哪里不对?源码中没有glPushAttrib(GL_LINE_STIPPLE) glPopAttrib()。所以会出现每次更新点画线时在下一次绘制时会以最后一次设置的信息重绘而覆盖掉之前已绘制好的点线。所以要进行状态压栈处理和谈栈处理,这样子在刷帧重绘才不会影响其他帧的绘制结果。(原因是什么目前我也不清楚,估计是状态机的管理问题。要了解内部的绘
2014-11-08 01:56:45 1594
原创 贴贴代码,看懂别人的代码也是一项好技能。
转载:点击打开链接glRotatef(GLfloat angle,GLfloat x,GLfloat y,GLfloat z)glRotatef(45,1,0,0)物體如何旋转?想象:从 坐标(0,0,0)即原点,引出一条线到(1,0,0),用右手握住这条线,这时,你会问,如何握?右手大拇指指向 (0,0,0)至(1,0,0)的方向 才握。另外四个手指的弯曲指向 即是物体旋
2014-11-07 19:24:31 777
原创 vs文件目录解析
首先,感谢前辈。我终于明白要有一颗感恩的心。开源主义是我信奉的一个正确信仰。怪不得出名的是MIT协议,虽然我没去阅读这个协议的细节。但是大家都知道它的存在,为什么是MIT。1、错误:$(ProjectDir)..\Resources\后改为正确$(ProjectDir)..\Resources\ 原因:$(ProjectDir)已经自带\啦,而且这个路径对应的是.vcxproj所在的目
2014-11-07 03:16:04 2145
原创 cocos2d-x 3.3 RC 个人升级总结 Director的主线解析
/** * Sets the Resource root path. * @deprecated Please use FileUtils::getInstance()->setSearchPaths() instead. */ CC_DEPRECATED_ATTRIBUTE void setResourceRootPath(const std::stri
2014-11-04 01:23:01 2051
原创 多封装,少开放。强烈建议C++标准增加class之间的注入机制
近日在修改了一下下引擎代码(为了自己的组件),发现有些接口是只有特定类及其内部函数才去访问,却不使用友元声明的形式进行数据访问——当然使用了普通非virtual的形式也就是意味着不建议重载。故此:1、建议派生类(或允许)重载的声明为虚函数即virtual类型,2、强制派生类实现的声明为纯虚函数3、不希望派生类重载或覆盖的函数则为普通类,如果访问群体有限定范围或者范围比较少,可以考虑
2014-11-03 20:49:16 736
WInSocket Chat UDP
2014-09-25
C++ primer 第十六章 模板句柄 C++11,使用委派构造函数,
2014-09-20
C++ primer 第15章 简单文本查找器例子代码
2014-09-07
cocos2d-x 引擎修改方案
2014-10-31
TA创建的收藏夹 TA关注的收藏夹
TA关注的人