随笔分类 - c++
CreateEvent的用法
摘要:事件对象就像一个开关:它只有两种状态---开和关。当一个事件处于”开”状态,我们称其为”有信号”否则称为”无信号”。可以在一个线程的执行函数中创建一个事件对象,然后观察它的状态,如果是”无信号”就让该线程睡眠,这样该线程占用的CPU时间就比较少。产生事件对象的函数如下:HANDLE CreateEvent( LPSECURITY_ATTRIBUTES lpEventAttributes, // SD BOOL bManualReset, // reset type BOOL bInitialState, // initia...
阅读全文
一个好用的宏
摘要:#ifndef todo# define __STR2__(x) #x# define __STR1__(x) __STR2__(x)# define __LOC__ __FILE__ "("__STR1__(__LINE__)") : Warning Msg: "# define __LOC2__ __FILE__ "("__STR1__(__LINE__)") : <TODO> "# define todo(str) message (__LOC2__ str)#endif#endif然后,在需要的
阅读全文
C++标准转换运算符reinterpret_cast【转】
摘要:reinterpret_cast <new_type> (expression)reinterpret_cast运算符是用来处理无关类型之间的转换;它会产生一个新的值,这个值会有与原始参数(expressoin)有完全相同的比特位。什么是无关类型?我没有弄清楚,没有找到好的文档来说明类型之间到底都有些什么关系(除了类的继承以外)。后半句倒是看出了reinterpret_cast的字面意思:重新解释(类型的比特位)。我们真的可以随意将一个类型值的比特位交给另一个类型作为它的值吗?其实不然。IBM的C++指南里倒是明确告诉了我们reinterpret_cast可以,或者说应该在什么地方
阅读全文
dynamic_cast解析
摘要:见http://baike.baidu.cn/view/1745213.htm
阅读全文
type_info Class中name()和raw_name()区别
摘要:大体来说就是raw_name()效率高是用户看不懂意思的一个字符串,name()效率比较低但是用户看得懂其意思,其实name()就是将raw_name()值解码了一下MSDN 信息http://msdn.microsoft.com/en-US/library/70ky2y6k(v=vs.80).aspx
阅读全文
【转】深入理解C++中的mutable关键字
摘要:mutalbe的中文意思是“可变的,易变的”,跟constant(既C++中的const)是反义词。 在C++中,mutable也是为了突破const的限制而设置的。被mutable修饰的变量,将永远处于可变的状态,即使在一个const函数中。 我们知道,如果类的成员函数不会改变对象的状态,那么这个成员函数一般会声明成const的。但是,有些时候,我们需要在const的函数里面修改一些跟类状态无关的数据成员,那么这个数据成员就应该被mutalbe来修饰。 下面是一个小例子:class ClxTest{ public: void Output() const;};void ClxTest...
阅读全文
const 小结
摘要:const 小结1、const对象默认为文件的局部变量,通过指定const 变量为extern,就可以在整个程序中访问const对象 例: //file_1.cpp extern const int bufSize = 1; //file_2.cpp extern const int bufSize;//use bufSize from file_1 for(int index = 0; index != bufSize; ++index)//use bufSize defined in file_1 //... 2、const 引用可以绑定到不同但相关的类型的对象,...
阅读全文
【转】C++ 关键字——friend
摘要:友元是指:采用类的机制后实现了数据的隐藏与封装,类的数据成员一般定义为私有成员,成员函数一般定义为公有的,依此提供类与外界间的通信接口。但是,有时需要定义一些函数,这些函数不是类的一部分,但又需要频繁地访问类的数据成员,这时可以将这些函数定义为该函数的友元函数。除了友元函数外,还有友元类,两者统称为友元。友元的作用是提高了程序的运行效率(即减少了类型检查和安全性检查等都需要时间开销),但它破坏了类的封装性和隐藏性,使得非成员函数可以访问类的私有成员。友元分为友元函数和友元类,两种具有不同的调用形式:class Data{public:...friend int set(int &m);
阅读全文
【转】函数指针数组的妙用
摘要:笔者在开发某软件过程中遇到这样一个问题,前级模块传给我二进制数据,输入参数为 char* buffer和 int length,buffer是数据的首地址,length表示这批数据的长度。数据的特点是:长度不定,类型不定,由第一个字节(buffer[0])标识该数据的类型,共有256(28 )种可能性。我的任务是必须对每一种可能出现的数据类型都要作处理,并且我的模块包含若干个函数,在每个函数里面都要作类似的处理。若按通常做法,会写出如下代码:void MyFuntion( char* buffer, int length ){ __int8 nStreamType = buffer[0]...
阅读全文
cocos2dx之编译到android手机
摘要:准备今天将cocos2d-x的示例项目tests编译到android真机运行,以及如何创建cocos2d-x的android项目。打开cocos2d-x的tests项目,路径为:D:\cocos2d-x-2.0.1\tests下载:PdaNet:http://xiazai.zol.com.cn/detail/36/350633.shtml如果你的手机或者平板无法连上电脑,可以下载这个软件。第一步:编译cocos2d-x的示例项目首先用visual studio 打开 tests项目,看看项目结构classes下的tests文件夹就是官方的示例代码,里面包含很全的,可是学习的好途径。现在使用cy
阅读全文
JNI实例(含代码)
摘要:本文主要参考http://tech.ccidnet.com/art/1081/20050413/237901_1.html 上的文章。C++调用JAVA主要用到了SUN公司的JNI技术, JNI是Java Native Interface的 缩写。从Java 1.1开始,Java Native Interface (JNI)标准成为java平台的一部分,它允许Java代码和其他语言写的代码进行交互。相关资料见http://java.sun.com/j2se/1.5.0/docs/guide/jni/spec/jniTOC.html开发环境安装及配置1.1 安装JDK 到SUN公司网站可以下载到
阅读全文
sizeof()小结
摘要:sizeof(xxx)的结果其实就是XXX所指类型的大小,在32位系统中//cout<<sizeof(unsigned short)<<","//2 // <<sizeof(short)<<","//2 // <<sizeof(int)<<","//4 // <<sizeof(char)<<","//1 // <<sizeof(unsigned char)<<","//1 //
阅读全文
【Curl (libcurl) 开发 之一】Cocos2dx之libcurl(curl_easy)的编程教程(帮助手册)!
摘要:转载自【黑米GameDev街区】原文链接:http://www.himigame.com/curl-libcurl/878.html 注意:如果你的服务器是Java的,那么要注意数据之间的大端小端的处理;否则无法正常获取正确的数据!本篇介绍使用libcurl编程的一般原则和一些基本方法。本文主要是介绍c语言的调用接口,同时也可能很好的适用于其他类c语言的接口。跨平台的可移植代码libcurl库背后的开发人员投入了相当大的努力确保libcurl可以在很多不同的系统和环境里工作。全局的准备程序必须初始化一些libcurl的全局函数。这意味着不管你准备使用libcurl多少次,你都应该,且只初始化.
阅读全文
WideCharToMultiByte和MultiByteToWideChar函数的用法
摘要:转载:http://www.cnblogs.com/gakusei/articles/1585211.html为了支持Unicode编码,需要多字节与宽字节之间的相互转换。这两个系统函数在使用时需要指定代码页,在实际应用过程中遇到乱码问题,然后重新阅读《Windows核心编程》,总结出正确的用法。WideCharToMultiByte的代码页用来标记与新转换的字符串相关的代码页。MultiByteToWideChar的代码页用来标记与一个多字节字符串相关的代码页。常用的代码页由CP_ACP和CP_UTF8两个。使用CP_ACP代码页就实现了ANSI与Unicode之间的转换。使用CP_UTF8
阅读全文
Cocos2dx之libcurl(curl_easy)的编程教程(帮助手册)!
摘要:Cocos2dx之libcurl(curl_easy)的编程教程(帮助手册)!转载自【黑米GameDev街区】原文链接:http://www.himigame.com/curl-libcurl/878.html 注意:如果你的服务器是Java的,那么要注意数据之间的大端小端的处理;否则无法正常获取正确的数据!本篇介绍使用libcurl编程的一般原则和一些基本方法。本文主要是介绍c语言的调用接口,同时也可能很好的适用于其他类c语言的接口。跨平台的可移植代码libcurl库背后的开发人员投入了相当大的努力确保libcurl可以在很多不同的系统和环境里工作。全局的准备程序必须初始化一些libcur.
阅读全文
cocos2dX LAYER_CREATE_FUNC and SCENE_CREATE_FUNC ,LAYER_NODE_FUNC can be replace by one macro CREATE_FUNC
摘要:LAYER_CREATE_FUNC and SCENE_CREATE_FUNC ,LAYER_NODE_FUNC can be replace by one macro CREATE_FUNC
阅读全文
vc助手快捷键
摘要:VC快捷键: F1: 帮助 Ctrl+O :Open Ctrl+P :Print Ctrl+N :New Ctrl+Shift+F2 :清除所有书签 F2 :上一个书签 Shift+F2 :上一个书签 Alt+F2 :编辑书签 Ctrl+F2 :添加/删除一个书签 F12 :Goto definition Shift+F12 :Goto reference Ctrl+ 'Num+ ' :Displays the next symbol definition or reference Ctrl+ 'Num- ' :Displays the previous sym
阅读全文
原码、反码、补码,计算机中负数的表示
摘要:原码:将一个整数,转换成二进制,就是其原码。如单字节的5的原码为:0000 0101;-5的原码为1000 0101。 反码:正数的反码就是其原码;负数的反码是将原码中,除符号位以外,每一位取反。如单字节的5的反码为:0000 0101;-5的反码为1111 1010。 补码:正数的补码就是其原码;负数的反码+1就是补码。如单字节的5的补码为:0000 0101;-5的原码为1111 1011。 在计算机中,正数是直接用原码表示的,如单字节5,在计算机中就表示为:0000 0101。负数用补码表示,如单字节-5,在计算机中表示为1111 1011。 这儿就有一个问题,为什么在计算机中...
阅读全文
error X3025: global variables are implicitly constant, enable compatibility mode to allow modification
摘要:error X3025: global variables are implicitly constant, enable compatibility mode to allow modification 全局变量是extern也是常量,在shader里面不能修改,但可以从宿主程序里改。以前的编译器没有强制这一点,现在新的强化了这一要求。把extern 改成static运行成功 Feedback# re: error X3025 回复 更多评论 2008-12-17 10:06 by Axif 我把extern 改成static了,但是还是出现相同的错误 555555555# re: e...
阅读全文
浙公网安备 33010602011771号