c++点滴积累
文章平均质量分 92
编写跨平台游戏引擎的不二选择,史上最强大的语言,你值得拥有!
n5
在信息时代客观障碍已不复存在所谓障碍都是主观上的如果你想研发什么新的技术你不需要几百万美元的资金你只需要在冰箱里放满比萨和可乐再有一台便宜的计算机和与之献身的决心你即可拥有任何你想拥有的编程境界- John Carmack
展开
-
linux, windows, mac, ios等平台GCC预编译宏判断
写跨平台c/c++程序的时候,需要搞清各平台下面的预编译宏,区分各平台代码。而跨平台c/c++编程,GCC基本在各平台都可以使用。整理了一份各平台预编译宏的判断示例。需要注意几点:* windows32/64平台_WIN32都会被定义,而_WIN64只在64位windows上定义,因此要先判断_WIN64* 所有的apple系统都会定义 __APPLE__,包括MacOSX和iOS*原创 2017-04-12 16:07:01 · 16401 阅读 · 2 评论 -
c技巧:用指针的指针移除单链表中元素
近日看到linus曾经提到的一个指针的指针操作单链表的技巧,挺有意思的,记录一下。原文:http://meta.slashdot.org/story/12/10/11/0030249/linus-torvalds-answers-your-questionsI've seen too many people whodelete a singly-linked原创 2013-12-25 14:06:27 · 2330 阅读 · 0 评论 -
从引用计数,auto release pool 到 shared ptr
想起这个话题,是因为最近在研究cocos2d-x,其内存管理机制使用c++模拟了Obj-C的auto release pool机制。先从头说起,这是一种基于引用计数的技术。我最早接触引用计数,是学习研究irrlicht引擎,当时的感觉是,必须弄清楚每个返回对象的函数,是否grab了对象,虽然irrlicht引擎自己是按照命名规则给予用户提示的,但是别人写的方法可就苦恼了。 纯粹引用原创 2012-08-19 20:08:33 · 3253 阅读 · 0 评论 -
[c++] typedef 无法前置声明
为了减少c++文件的编译依赖,前置声明经常使用,特别是在头文件中,如果不是必要,对于class基本都使用前置声明,而不是直接#include。今天遇到一个问题,需要在某类的头文件里面引用到另外一个“类”,因此自然使用了前置声明,但是居然编译不过,显示定义冲突。查了一下,原来被引用的“类”其实不是一个类,而是一个struct的typedef,非常老套的c写法:typedef st原创 2012-07-11 11:24:07 · 3652 阅读 · 0 评论 -
c++ RTTI冲突
今天碰到了一个问题,郁闷了半天。项目里用的一个库更新了,我们这儿有些连接错误,type info ...。最后发现是那个库编译时将RTTI关了,而我们项目是开着的。关闭RTTI搞定原创 2011-06-07 10:39:00 · 1378 阅读 · 0 评论 -
(转)C语言家族扩展
(转)C语言家族扩展 <br /> 翻译:5.1--5.6林峰5.7--5.20董溥5.21--5.26王聪5.27--5.34刘洋5.35--5.43贾孟树<br /><br />致谢:感谢陈老师指出其中的一些错误,已修订。<br /> 修订记录: 修订一些用词和标点符号。(董溥)2007年1月12号修订一些用词和错别字。(王聪)2006年12月14号修正一些错误的标签。(王聪,董溥)2006年12月13号<br />GNU C提供了多种在ISO标准C中没有的特性。(‘-pedantic’选项会使GC转载 2010-09-10 16:55:00 · 3207 阅读 · 1 评论 -
c++日积月累-引用
引用是对象的别名,引用并非对象的指针,也不是拷贝,而是对象自己。函数返回一个引用,意味着该函数调用可以出现在赋值运算符的左边。连续调用返回引用的函数形成方法链,例如count注意:引用不能重新指向另外一个对象。你无法让引用与其指示物分离。和指针不同,一旦引用和对象绑定,它无法再被重新指向其他对象。引用本身不是一个对象(它没有标识; 当试图获得引用的地址时,你将的到它的指示物原创 2009-11-04 10:26:00 · 1518 阅读 · 0 评论 -
c++日积月累-inline
1,inline关键字只写在函数定义前,不应该写在函数声明前。inline是实现细节,不是对外的接口,所以不应该写在声明处。inline函数的声明应该和普通函数没有区别。对于类的inline成员函数,如果是直接写在类体中的,则可以省略inline关键字,但是这不是值得推荐的方法,因为这会让用户看到不必要的实现细节。 2,inline函数的定义必须写在头文件中,无论是类的成员函数原创 2009-11-04 09:51:00 · 1093 阅读 · 0 评论 -
c++日积月累-const
const A* a;和A const * a;是一样的,通常用前者,表示被指针a所指的A对象,不能通过a修改A* const a;是指a指针是const的不能再指向其他对象const A* const a;同时包括上两者的含义。const A& a;和A const& a;是一样的,通常用前者,表示引用a不能修改它所引用的对象。注意:A& const a;的写法是没有意义的,因原创 2009-11-04 09:49:00 · 1141 阅读 · 3 评论 -
do...while(0)的妙用
do...while(0)的妙用 在C++中,有三种类型的循环语句:for, while, 和do...while, 但是在一般应用中作循环时, 我们可能用for和while要多一些,do...while相对不受重视。 但是,最近在读我们项目的代码时,却发现了do...while的一些十分聪明的用法,不是用来做循环,而是用作其他来提高代码的健壮性。 1. do...while(0)消除g转载 2009-01-14 10:10:00 · 2253 阅读 · 4 评论 -
VC++小技巧-Output窗口输出定位
在使用VC++时,经常使用OutputDebugString往往Output窗口写一些调试信息,如果输出信息遵循某种格式,那么在Output窗口中点击相应输出文本就会跳到相应的代码行中。具体格式MSDN中有说,简单的说法,在输出文本的最前面是"文件名(行号):"的格式就可以了。一个例子,用在我的内存泄露检测代码中:wsprintf(output_temp,"%s(%d): >>>>>>>>原创 2008-05-18 16:20:00 · 3457 阅读 · 0 评论