C/C++ 宏技巧

1. C 也可以模板化

#define DEFINE_ARRAY_TYPE(array_type_, element_type_)   static inline int array_type_ ## _init(struct array_type_ *array) {     return lwan_array_init((struct lwan_array *)array);   }// 实现了根据不同 array_type_ 来生成不同的函数名,是不是很吊炸天,中间的 ## 用来连接前后的两个字符串。

 

2. ....

时间: 2024-11-13 05:08:20

C/C++ 宏技巧的相关文章

google-glog 开源库分析(四):glog宏技巧

在核心结构之外,google-glog还通过宏技巧提供统一简洁的使用接口. 同时,通过命名空间的使用尽可能的减少名字冲突,提供一个简介的日志库. 宏助手 通过宏提供一个统一的简洁的日志输出接口 简单的使用如LOG(INFO),LOG(ERROR)等日志输出接口 通过宏提供丰富的日志输出扩展功能 提供了IF,CHECK等助手宏来简化代码 编程技巧 命名空间的使用 因为是作为库使用,所以glog中使用了命名空间类避免名字冲突 通过google命名空间提供glog库的接口空间,内部实现则进一步封装到嵌

C语言高级宏技巧

特殊符号#.## (1)# When you put a # before an argument in a preprocessor  macro, the preprocessor turns that argument into a character array.  在一个宏中的参数前面使用一个#,预处理器会把这个参数转换为一个字符数组 简化理解:#是“字符串化”的意思,出现在宏定义中的#是把跟在后面的参数转换成一个字符串 #define ERROR_LOG(module) fprint

我用C++的理由——关于C和C++的选择

? 摘自:http://www.xue163.com/32/6/325715.html,作者:王可.整理的很好! 首先,我不会使用Java或C#,能力上不会,主观上也不会,因为两点原因:1,他们都属于解释型的语言,这有很多问题是我无法容忍的,程序的速度和封装的安全性:2,他们都不够底层,没有指针,却加载了内存管理器,对我来说这些都是麻烦和束缚,对我而言他们都不是足够自由的语言.或者说,我无法接受他们对使用者的理念,似乎他们认为使用他们的程序员都是懒惰和容易犯错误的,而他们的高级之处都是依赖各种类

C++的开源跨平台日志库glog学习研究(一)

作为C++领域中为数不多的好用.高效的.跨平台的日志工具,Google的开源日志库glog也算是凤毛麟角了.glog 是一个C++实现的应用级日志记录框架,提供了C++风格的流操作. 恰巧趁着五一我也学习研究了这个glog库,写个总结如下.走过路过的的各位牛人.高手可以忽略这篇文章了. 从code.google.com下载源码(在这里),在Visual Studio 2010中打开工程,如下: 可见只有四个工程,其中libglog和libglog_static分别是Windows下的动态库和静态

C++11标准教程

C++11,先前被称作C++0x,即ISO/IEC 14882:2011,是目前的C++编程语言的正式标准.它取代第二版标准ISO/IEC 14882:2003(第一版ISO/IEC 14882:1998公开于1998年,第二版于2003年更新,分别通称C++98以及C++03,两者差异很小).新的标准包含核心语言的新机能,而且扩展C++标准程序库,并入了大部分的C++ Technical Report 1程序库(数学的特殊函数除外).最新的消息被公开在 ISO C++ 委员会网站(英文). I

游戏编程精粹系列书籍目录一览

游戏编程精粹1 第1章 通用编程技术 1.0 神奇的数据驱动设计(Steve Rabin) 3 1.0.1 点子1--基础 3 1.0.2 点子2--最低标准 3 1.0.3 点子3--杜绝硬编码 3 1.0.4 点子4--将控制流写成脚本 4 1.0.5 点子5--什么时候不适合使用脚本? 5 1.0.6 点子6--避免重复数据 5 1.0.7 点子7--开发工具来生成数据 6 1.0.8 结论 6 1.1 面向对象的编程与设计技术(James Boer) 7 1.1.1 代码风格 7 1.1

C++中的RTTI(转)

转自:http://blog.csdn.net/mannhello/article/details/5217954 RTTI 是“Runtime Type Information”的缩写,意思是:运行时类型信息.它提供了运行时确定对象类型的方法.本文将简略介绍 RTTI 的一些背景知识.描述 RTTI 的概念,并通过具体例子和代码介绍什么时候使用以及如何使用 RTTI:本文还将详细描述两个重要的 RTTI 运算符的使用方法,它们是 typeid 和 dynamic_cast. 其实,RTTI 在

C和C++的面向对象专题(6)——C++也能反射

本专栏文章列表 一.何为面向对象 二.C语言也能实现面向对象 三.C++中的不优雅特性 四.解决封装,避免接口 五.合理使用模板,避免代码冗余 六.C++也能反射 七.单例模式解决静态成员对象和全局对象的构造顺序难题 八.更为高级的预处理器PHP 六.C++也能反射 今天我们来探讨C++的反射问题,缺乏反射机制一直是C++的大问题,很多系统的设计时,需要根据外部资源文件的定义,动态的调用内部的函数和接口,如果没有反射,将很难将外部的数据,转换为内部的方法. Java和.net的反射机制很容易实现

ios开发小技巧-用宏化简代码

在IOS开发中,要做字典转模型一般情况如下: 1 /** 2 * 声明方法 3 */ 4 - (instancetype) initWithDictionary:(NSDictionary *)dict; 5 + (instancetype) carWithDictionary:(NSDictionary *)dict; 6 7 /** 8 * 实现方法 9 */ 10 - (instancetype)initWithDictionary:(NSDictionary *)dict 11 { 12