cocos2d-x 3.x 中用到的c11特性

回调函数指针传递

在从ccMacros.h中定义了CC_CALLBACK_n系列宏,其中n为0~4,表示包裹回调函数指针的参数个数。

以触摸事件为例:

1 void Test::initListener()
2 {
3     auto listener = EventListenerTouchOneByOne::create();
4     listener->onTouchBegan = CC_CALLBACK_2(Test::onTouchBegan, this);
5     listener->onTouchMoved = CC_CALLBACK_2(Test::onTouchMoved, this);
6     listener->onTouchEnded = CC_CALLBACK_2(Test::onTouchEnded, this);
7     listener->onTouchCancelled = CC_CALLBACK_2(Test::onTouchCancelled, this);
8 }

Lambda表达式

语法格式:[捕捉块](参数)->返回值类型{主体}

其中捕捉块是指显示指定闭包中函数需要捕捉的变量,其中包括6种表达方式:[=]表示通过值传递捕捉所有变量;[&]表示通过引用传递捕捉所有变量;[var]表示通过值捕捉变量var,不捕捉其他变量;[&var]表示通过引用捕捉var,不捕捉其他变量;[=,&var]表示默认通过值捕捉,变量var引用捕捉;[&,var]表示默认通过引用捕捉,变量var值捕捉

时间: 2024-10-03 09:09:04

cocos2d-x 3.x 中用到的c11特性的相关文章

用C11获取时间日期

以下是使用C11特性获取当前日期时间的方法 #include <stdio.h> #include <time.h> int main(int argc, char * argv[]) { time_t seconds_number = time(NULL); tm local_time; localtime_s(&local_time, &seconds_number); char date[11]; if (strftime(date, sizeof(date)

C11中的Unicode

在C11(ISO/IEC 9899:2011)标准中引入了对UTF8.UTF16以及UTF32字符编码的支持. 其中,UTF8字符直接通过char来定义,字面量前缀使用u8.比如: char c = u8'你'; const char *s = u8"你好"; 而UTF16字符直接通过char16_t来定义,字面量前缀使用u.比如: #include <uchar.h> char16_t c = u'你'; const char16_t *s = "你好"

用C11打印日志

以下是使用C11特性打印日志的方法 #include <stdio.h> #include <time.h> static const int MAX_FILE_NAME_LEN = 512; // 文件名长度最大值 int main(int argc, char * argv[]) { // 获取当前时间 time_t seconds_number = time(NULL); tm local_time; localtime_s(&local_time, &sec

重载Cocos2D生存期的方法

大熊猫猪·侯佩原创或翻译作品.欢迎转载,转载请注明出处. 如果觉得写的不好请多提意见,如果觉得不错请多多支持点赞.谢谢! hopy ;) 免责申明:本博客提供的所有翻译文章原稿均来自互联网,仅供学习交流之用,请勿进行商业用途.同时,转载时不要移除本申明. 如产生任何纠纷,均与本博客所有人.发表该翻译稿之人无任何关系.谢谢合作! 正如Cocos2D 3.1中如果在重载这些生存期方法中不调用super,会使编译器发出警告--这可以节省我们大量的调试时间. 你可能对这是如何做到的感到好奇? Cocos

Cocos2dx 跨平台使用

环境搭建 0 引擎介绍 Cocos2d-x 是一款开源的2d游戏引擎,目的是封装底层绘图代码(OpenGL),简化 2D 游戏的开发过程.它原型是 Cocos2d,最早出现在iphone上(Cocos2d-iPhone).后来中国的开发者(触控科技)在Cocos2d-iPhone进行了移植,使它成为一款跨平台的游戏引擎(目前支持ios,windows,android,tizen,blackberry等几乎所有的主流移动操作系统). 目前Cocos2d-x的最新版本是3.2,已经支持3D特性,因此

C Primer Plus (第6版) 读书笔记_Chapter 1

第 1 章 初识 C 语言 ■ C 的历史和特性 ■ 编写程序的步骤 ■ 编译器和链接器的一些知识 ■ C 标准 1.1  C 语言的起源   1972年,贝尔实验室的 丹尼斯 ? 里奇(Dennis Ritch) 和 肯 ? 汤普逊(Ken Thompson)在开发 UNIX 操作系统 时设计了 C 语言.然而,C 语言不完全是里奇突发奇想而来,他是在 B 语言(汤普逊发明)的基础上进行设计.至于 B 语言的起源,那是另一个故事.C 语言设计的初衷是将其作为程序员使用的一种编程工具,因此,其主

面向对象的核心概念

1.面向对象的核心概念 从理论上说,面向对象技术拥有四大基本特性. (1)封装 这是一种隐藏信息的特征.封装这一特性不仅大大提高了代码的易用性,而且还使得类的开发者可以方便的更换新的算法,这种变化不会影响使用类的外部代码.可以用以下公式展示类的封装特性: 封装的类=数据+对此数据所进行的操作(即算法) 通俗的说,封装就是:包起外界不必需要知道的东西,只向外界展露可供展示的东西. 在面向对象理论中,封装这个概念拥有更为宽广的含义.小到一个简单的数据结构,大到一个完整的软件子系统,静态的如某软件系统

C#编程语言与面向对象——核心

面向对象的核心 (1).封装 封装的类=数据+对此数据所进行的操作(即算法) 封装起外界不必需要知道的东西,指向外界展现可供展示的东西. 小到一个简单的数据结构,大到一个完整的软件子系统.静态的如某软件系统要收集数据信息项,动态的如某个工作处理流程,都可以封装到一个类中. 具备这种意识,是掌握面向对象分析与设计技巧的关键. (2).抽象 在使用面向对象的方法设计一个软件系统时,首先就要区分出现实世界中的事务所属的类型,分析它们拥有哪些性质与功能,再将他们抽象为在计算机虚拟世界中才有意义的实体——

Python描述符(descriptor)解密

Python中包含了许多内建的语言特性,它们使得代码简洁且易于理解.这些特性包括列表/集合/字典推导式,属性(property).以及装饰器(decorator).对于大部分特性来说,这些"中级"的语言特性有着完善的文档,并且易于学习. 但是这里有个例外,那就是描述符.至少对于我来说,描述符是Python语言核心中困扰我时间最长的一个特性.这里有几点原因如下: 有关描述符的官方文档相当难懂,而且没有包含优秀的示例告诉你为什么需要编写描述符(我得为Raymond Hettinger辩护一