建议156:利用特性为应用程序提供多个版本 基于如下理由,需要为应用程序提供多个版本: 应用程序有体验版和完整功能版。 应用程序在迭代过程中需要屏蔽一些不成熟的功能。 假设我们的应用程序共有两类功能:第一类功能属于单机版,而第二类的完整版还提供了在线功能。那么,在功能上,需要定制两个属性“ONLIN ...
自定义函数: 宏函数 (1)函数式宏定义的参数没有类型,预处理器只负责做形式上的替换,而不做参数类型检查,所以危险性高;但因为省去了函数的调用,返回,释放,所以效率比自定义函数高; (2)调用真正函数的代码和调用函数式宏定义的代码编译生成的指令不同。 如果MAX是个普通函数,那么它的函数体retur ...
分类:
其他好文 时间:
2017-12-11 11:29:03
阅读次数:
197
问题1:对与buffer宏定义的理解 一些得到的基本结论:int型数据占有一个字的空间,char型数据占有一个字节的空间,并且char数据类型的定义是为ASCII字符表量身定制的 对与buffer的理解: #define buffer ((char*) * (int far*)0x200) 首先,复 ...
分类:
其他好文 时间:
2017-12-09 23:48:23
阅读次数:
175
编译预处理指令 宏定义 宏定义是指将一个标识符(又称宏名)定义为一个字符串(或称替换文本)。在编译预处理时,对程序中出现的所有宏名都用相应的替换文本去替换,这被称为“宏替换”或“宏展开”。C语言中,“宏定义分为无参宏定义和带参宏定义两种。 无参宏定义 无参宏定义 带参宏定义 带参宏定义 条件编译 条 ...
分类:
其他好文 时间:
2017-12-07 21:56:30
阅读次数:
187
本文转载自:http://blog.csdn.net/fdaopeng/article/details/7895037 __setup这条宏在Linux Kernel中使用最多的地方就是定义处理Kernel的启动参数的函数及数据结构,宏定义如下: #define __setup(str, fn) \ ...
分类:
系统相关 时间:
2017-12-06 11:33:41
阅读次数:
244
可变参数列表可通过宏来实现,这些宏定义在stdarg.h头文件中,它是标准库的一部分。这个头文件声明了一个类型va_list和三个宏 va_start,va_arg,va_end.可以声明一个类型为va_list的变量,与这几个宏配合使用,访问参数的值。参数列表的可变部分位于一个或多个普通参数(命名 ...
分类:
编程语言 时间:
2017-12-06 11:28:48
阅读次数:
158
在Linux环境下使用vim进行驱动程序编写和维护的时候,会经常需要调用Linux内核的函数或宏定义,在驱动程序和kernel代码之间频繁跳转是件很繁琐的事,使用ctags包可以轻松实现函数或宏定义的跳转。 ...
分类:
系统相关 时间:
2017-12-05 20:07:13
阅读次数:
234
混淆内容 1、混淆思路:利用宏定义进行混淆,混淆文件需要在需要混淆的文件中引用(或全局引用) 2、混淆内容:(橘黄色) 公开变量 @property (nonatomic, strong) NSString *gameName; 私有变量 @interface XXXX () { NSString ...
分类:
其他好文 时间:
2017-12-05 13:29:56
阅读次数:
165
要点:变量都用括号括起来,防止出错,结尾不需要;。在实际编程中,不推荐把复杂的函数使用宏,不容易调试。多行用\ 要写好C语言,漂亮的宏定义是非常重要的。宏定义可以帮助我们防止出错,提高代码的可移植性和可读性等。 在软件开发过程中,经常有一些常用或者通用的功能或者代码段,这些功能既可以写成函数,也可以 ...
分类:
编程语言 时间:
2017-12-04 17:40:37
阅读次数:
164
Container_of在Linux内核中是一个常用的宏,用于从包含在某个结构中的指针获得结构本身的指针,通俗地讲就是通过结构体变量中某个成员的首地址进而获得整个结构体变量的首地址。 实现方式: container_of(ptr, type, member) ; 其实它的语法很简单,只是一些指针的灵 ...
分类:
其他好文 时间:
2017-12-03 15:37:46
阅读次数:
194