![](https://img-blog.csdnimg.cn/20201014180756925.png?x-oss-process=image/resize,m_fixed,h_64,w_64)
C/C++
skyman_2001
这个作者很懒,什么都没留下…
展开
-
游戏开发踩的那些坑:abs函数的平台差异
转载请注明,来自:http://blog.csdn.net/skyman_2001我写了个弹性3D箭头功能,指定起点、终点和圆弧的夹角,就会渲染出弯曲的3D箭头,里面用了abs函数计算浮点数的绝对值,在windows上运行没问题,打了安卓包,在手机上运行发现箭头的位置错了,经过调试发现,abs函数取的浮点数(小于1)的绝对值为0!一查文档,原来abs函数不加std的命名空间,是调用的C语言的abs函数,只处理整数,要想处理浮点数,必须调用std::abs或fabs函数,详见:https://stac原创 2020-07-05 00:23:16 · 561 阅读 · 2 评论 -
让VC调试器正确显示UTF-8字符串
原文地址:http://www.cppblog.com/sunicdavy/archive/2012/02/14/165566.html默认的, VC调试器只能正常显示ANSI字符串及UNICODE字符串, 而UTF-8字符串及其他格式则无法显示这里无需编写插件及修改配置文件,只需要将要显示的字符串拉到Watch中,并在变量后面添加,s8即可显示 --> 同样类型的转载 2013-11-05 20:21:11 · 2904 阅读 · 0 评论 -
VC工程的命令行编译法
原文地址:http://www.cppblog.com/sunicdavy/archive/2013/11/05/204099.html我使用的是VS2010, 老版本的未测call "c:\Program Files (x86)\Microsoft Visual Studio 10.0\VC\vcvarsall.bat" cd 你的工程sln目录MSBuil转载 2013-11-05 20:22:36 · 2814 阅读 · 0 评论 -
C++ 11 in Xcode
原文地址:http://stackoverflow.com/questions/10438253/im-having-some-trouble-with-c11-in-xcode转载 2013-09-29 15:42:43 · 3074 阅读 · 0 评论 -
VC2005利用正规表达式做快速替换
原文地址:http://hi.baidu.com/kidcdf/item/f10618926b9a5dba83d29539比如有以下代码pkConan = NULL;pkKid=NULL;pkFuBu = NULL;pkLan = NULL;你想要换成你自己的宏 #define MyDelete(v) {if(v) delete v; v转载 2013-12-09 14:50:03 · 2834 阅读 · 0 评论 -
Magic debug values
摘自:http://en.wikipedia.org/wiki/Magic_number_(programming)CodeDescription..FACADE"Facade", Used by a number of RTOSes1BADB002"1 bad boot", Multiboot header magic numb转载 2013-12-03 15:47:18 · 3268 阅读 · 0 评论 -
设计模式c++实现(一):装饰(Decorator)模式
转载请注明,来自:http://blog.csdn.net/skyman_2001class Component{public: Component() {} virtual ~Component() {} virtual void operation() = 0; virtual Component *remove() = 0;};class ConcreteCompon原创 2013-12-11 19:49:00 · 2862 阅读 · 0 评论 -
c++ template笔记
1. 数组template void array_print(T (&arr)[N]){ for(int i = 0; i < N; ++i) { cout << arr[i] << endl; }}int arr[5] = {1, 2, 3, 4, 5}; array_print(arr); //实例成 array_print(int(&)[100])2. 返回原创 2013-12-17 00:31:01 · 3552 阅读 · 4 评论 -
VS2010 LNK1123: 转换到 COFF 期间失败: 文件无效或损坏 的解决方法
原文地址:http://my.oschina.net/pandao/blog/136212用VS2010编译C++项目时出现这样的错误:LNK1123: 转换到 COFF 期间失败: 文件无效或损坏 解决方法:1、搜索C盘下的cvtres.exe,结果得到类似这样的列表:C:\Program Files\Microsoft Visual Stud转载 2014-03-02 18:10:58 · 3105 阅读 · 0 评论 -
bsdiff test
转载请注明,来自:http://blog.csdn.net/skyman_2001Test Case 1:libcurl.dylib 354kblibcurl+ssl.dylib 412kb------------------------------------------diff: 65kbTest Case 2:libcurl原创 2014-03-02 22:30:23 · 2977 阅读 · 0 评论 -
客户端瘦身
转载请注明,来自:http://blog.csdn.net/skyman_2001我们客户端刚开始编译出来有20MB,通过下面措施成功瘦身为6MB:For the release build make sure that: - "Deployment Post Processing" is enabled (otherwise the whole stripping p原创 2014-03-04 22:23:51 · 3290 阅读 · 3 评论 -
C++ Debug Tips
转载请注明,来自:http://blog.csdn.net/skyman_2001这里记录我平时调试C++的一些技巧心得,会持续更新。1. 用typeid()取得某对象的类型 Debug情景: 一个vector变量m_views里有多个IObjectView *指针,分别是不同的IObjectView子类对象,怎么知道每个对象具体是什么子类呢?原创 2014-03-06 15:46:00 · 2881 阅读 · 0 评论 -
C++访问lua函数性能测试结果
转载请注明,来自:http://blog.csdn.net/skyman_2001lua版本是5.11. windows平台 CPU: Intel Core i5 3.20GHz 3.60GHz 内存: 8G 操作系统:win7 64位 测试数据:执行125次耗时0.067毫秒2. ios平台 iPhone 4s原创 2014-08-20 17:39:48 · 3440 阅读 · 0 评论 -
fopen vs access vs stat
转载请注明,来自:http://blog.csdn.net/skyman_2001vs2010, win7function | call time--------------------------------fopen 1.149000 ms_access 0.108000 ms stat 0.148000 m原创 2014-09-24 20:59:29 · 3726 阅读 · 0 评论 -
The Use of Design Patterns In Game Development
原文地址:http://gamedev.stackexchange.com/questions/4157/what-are-some-programming-design-patterns-that-are-useful-in-game-developmentBuilder: set up component-based entity one component at a转载 2013-10-17 13:33:42 · 2801 阅读 · 0 评论 -
C++ 11学习(1):lambda表达式
c++ 11 lambda & function原创 2013-08-26 15:54:03 · 1896 阅读 · 0 评论 -
C++ Template学习笔记之函数模板(7)——重载函数模板
函数模板可以被重载。如: // 类模板Array的定义 template class Array { /* . . . */ }; // main()的三个函数模板声明 template Type min( const Array&, int );原创 2006-01-12 16:48:00 · 2538 阅读 · 0 评论 -
C++ Template学习笔记之函数模板(6)——模板显式特化
我们并不总是能够写出对所有可能被实例化的类型都是最合适的函数模板。在某些情况下,我们可能想利用类型的某些特性,来编写一些比模板实例化的函数更高效的函数。在有些时候,一般性的模板定义对于某种类型来说并不适用,这时我们必须为函数模板实例化提供特化的定义。 在模板显式特化定义(explicit specialization definition)中,先是关键字templat原创 2006-01-12 15:36:00 · 3095 阅读 · 0 评论 -
C++ STL概述
注:参考自《The C++ Standard Library》一、基本概念1. 名字空间std 三种使用方式: (1) 直接用标识符std限定修饰。如: std : : cout (2) 使用using声明。如: using std : : cout; using std : : en原创 2006-01-14 17:39:00 · 3128 阅读 · 2 评论 -
C++ Template学习笔记之函数模板(2)——函数模板实例化
函数模板指定了怎样根据一组或更多实际类型或值构造出独立的函数。这个构造过程被称为模板实例化。这个过程是隐式发生的,它可以被看作是函数模板调用或取函数模板的地址的副作用。 为了判断用作模板实参的实际类型和值,编译器需要检查函数调用中提供的函数实参的类型。用函数实参的类型来决定模板实参的类型和值的过程被称为模板实参推演。我们也可以不依赖模板实参推演过程,而是显式地指定模板原创 2006-01-11 22:47:00 · 3256 阅读 · 0 评论 -
C++ Template学习笔记之函数模板(1)——函数模板定义
说明:本笔记是参考《C++ Primer(3rd)》中文版 函数模板提供了一种机制,通过它可以保留函数定义和函数调用的语义(在一个程序位置上封装了一段代码,确保在函数调用之前实参只被计算一次),而无需象宏方案那样绕过C++的强类型检查。如: template Type min(Type a,Type b) {原创 2006-01-11 22:13:00 · 4205 阅读 · 0 评论 -
C++ Template学习笔记之函数模板(3)——模板实参推演
当函数模板被调用时,对函数实参类型的检查决定了模板实参的类型和值,这个过程被称为模板实参推演。 其通用算法如下: 1. 依次检查每个函数实参,以确定在每个函数参数的类型中出现的模板参数; 2. 如果找到模板参数,则通过检查函数实参的类型,推演出相应的模板实参; 3. 函数参数类型和函数实参类型不必完全匹配。下列类型转换可以被原创 2006-01-11 23:05:00 · 3138 阅读 · 0 评论 -
C++ Template学习笔记之函数模板(4)——显式模板实参
在某些情况下编译器不可能推演出模板实参的类型。如笔记(2)中所举的例子,如果模板实参推演过程为同一模板实参推演出两个不同的类型,则编译器会给出一个错误,指出模板推演失败。 在这种情况下,我们需要改变模板实参推演机制,使用显式指定(explicitly specify)模板实参。模板实参被显式指定在逗号分隔的列表中,用尖括号 template原创 2006-01-12 11:31:00 · 2725 阅读 · 0 评论 -
C++ Template学习笔记之函数模板(5)——模板编译模式
一、包含编译模式 在包含编译模式下,我们在每个模板被实例化的文件中包含函数模板的定义,并且往往把定义放在头文件中,象内联函数所做的那样。如: // model1.h // 包含模式:模板定义放在头文件中 template Type min( Type t1, Type t2 ) {原创 2006-01-12 15:05:00 · 2451 阅读 · 0 评论 -
如何将float转换为string
可能有好多人,包括C语言老手都不知道如何将float数据转换为string,我就是这样,今天查了一下MSDN,才知道C提供了_gcvt函数实现这个功能,收获着实不小,为了方便自己查询,也为了那些像我这样的网友能够了解该函数的具体用法,我把MSDN的原文原封不动抄录如下: _gcvtConverts a floating-point value to a string, whi原创 2006-05-05 11:28:00 · 26437 阅读 · 8 评论 -
VC Studio 使用技巧大全
这是我网上东抓一条西抓一条,看起来真累,再加上一些自已的心得,所以今天再次进行整理出来与大家分享! 黄森堂(vcmfc). 1.检测程序中的括号是否匹配 把光标移动到需要检测的括号(如大括号{}、方括号[]、圆括号()和尖括号2.查看一个宏(或变量、函数)的宏定义 把光标移动到你想知道的一个宏上,就比如说最常见的DECLARE_MAP_MESSAGE上按一下F12(或右键菜单中的Go To D转载 2006-10-15 20:58:00 · 2147 阅读 · 1 评论 -
#pragma 预处理指令详解
原文地址:http://www.52rd.com/Blog/Detail_RD.Blog_sunhuibo_5025.html在所有的预处理指令中,#pragma 指令可能是最复杂的了,它的作用是设定编译器的状态或者是指示编译器完成一些特定的动作。#pragma指令对每个编译器给出了一个方法,在保持与C和C++语言完全兼容的情况下,给出主机或操作系统专有的特征。依据定义,编译指示是机器或操作转载 2006-12-22 22:38:00 · 1767 阅读 · 0 评论 -
如何将类成员函数作成一个回调函数
注:这是本人从网上搜集整理的相关资料,以备以后查找。 由于DDEML机制需要使用回调函数,因此使用DDEML的关键是解决在MFC编程体系中回调函数的使用。回调函数(Callback function)大量用于Windows的系统服务,通过它,程序员可以安装设备驱动程序和消息过滤系统,以控制Windows的有效使用。许多程序员都发现,利用MFC或者其它的C++应用编写回调函数是非常麻转载 2006-12-27 19:07:00 · 2006 阅读 · 1 评论 -
回调函数小例
#include "stdafx.h"typedef int(__stdcall *ptr)(char *p); // 声明Callback 类型的函数指针 int A(char *p){ std::cout return 0;}int C(char *p){ std::cout return 0;}int B(int(*pp)(char *),char *p) { pp(p)原创 2006-12-26 22:01:00 · 1574 阅读 · 0 评论 -
C++知识点(一)
一、名字空间(namespace)名字空间可帮助程序员开发新的软件组件而不会与现有软件组件产生命名冲突。C++草案标准中的每个头文件用名字空间std保证今后C++标准库操作的每个特性是惟一的,不会与其他程序员开发的软件组件混起来,程序员不能用名字空间std定义新的类库。using namespace std;上述语句只是表示我们使用C++标准库中的软件组件。std::countcount的完全限定原创 2005-10-22 20:21:00 · 1903 阅读 · 0 评论