C中的空宏定义,即只有一个参数】的更多相关文章

空宏定义的测试代码 #include <stdio.h> #define D(x) int main() { D(printf("null macro")); return 0; } 当宏定义只有一个参数的时候就属于空宏定义, 使用该宏时和代码注释的效果相同 起到相同效果的宏定义如下所示 #define D(x) do{}while(0)…
explicit研究   explicit是C++中的关键字,不是C语言中的.英文直译是“明确的”.“显式的”意思.出现这个关键字的原因,是在C++中有这样规定的基础上:当定义了只有一个参数的构造函数时,同时也定义了一种隐式的类型转换.先看类型转换.   http://blog.csdn.net/guodongxiaren/article/details/24455653…
Makefile中的一些特殊宏定义的名字跟shell中的位置变量挺相似的. $?    当前目标所依赖的文件列表中比当前目标文件还要新的文件 $@   当前目标我名字 $<   当前依赖文件的名字 $*    不包括后缀名的当前依赖文件的名字 $^   规则的所有依赖文件列表,使用空格分隔.如果目标是静态库文件名,它所代表的只能是所有库成员(.o文件)名.一个文件可重复的出现在目标的依赖中,变量“$^”只记录它的一次引用情况.就是说变量“$^”会去掉重复的依赖文件. make -C /the/d…
在iOS开发的过程中合理的使用宏定义能够极大提高编码的速度,下面是一些常用的宏定义,部分内容来自互联网 Log // 调试状态, 打开LOG功能 #ifdef DEBUG #define GLLog(...) NSLog(__VA_ARGS__) #define GLLogMethod NSLog(@"%s", __func__) #else // 发布状态, 关闭LOG功能 #define GLLog(...) #define GLLogMethod #endif 颜色 #defin…
0x01:简介 在堆中的内存申请和释放中,为了减少使用系统调用函数对内存操作,malloc_state(分配区)结构中使用了fastbinsY数组和bins数组.当chunk被free后,bins链会将这些free chunk组织起来.当下次malloc时,会先对bins链中的free chunk进行遍历,有适合的则使用,无合适的再进行下一步操作. 在申请和释放操作时,一般是有一个arena(分配区,其为malloc_state结构类型).通过宏定义bin_at(m,i)即可获得对相应bins链…
常规用法不再介绍,做如下几点说明和介绍 1. 带参数的宏只完成简单字符替换,之前不做计算实参的工作,如下 #define SUM(x,y) x+yint a=3,b=2,c=1;int s;s=SUM(a+b,b)*SUM(c,b)+c; 结果应该是 s=a+b+b*c+b+c=10. 2. define中的特殊标识符 #define Conn(x,y) x##y#define ToChar(x) #@x#define ToString(x) #xint a=Conn(12,34);char b…
转自http://www.jianshu.com/p/be00c3f3cafd //字符串是否为空 #define kStringIsEmpty(str) ([str isKindOfClass:[NSNull class]] || str == nil || [str length] < 1 ? YES : NO ) //数组是否为空 #define kArrayIsEmpty(array) (array == nil || [array isKindOfClass:[NSNull class…
在C++的宏定义中,符号##一般是用于连接,包括参数的连接,参数与标识符的连接等,然后形成一个新的标识符. 下面举几个例子来进行说明. eg1: #define ADD(a,b) a##b #define ab "123456" int main() { string str=ADD(a,b); //ADD(a,b)结果为ab,此时str=ab std::cout<<str<<std::endl; // #define ab "123456"…
1.Preprocessor Glue: The ## Operator 预处理连接符:##操作符 Like the # operator, the ## operator can be used in the replacement section of a function-like macro.Additionally, it can be used in the replacement section of an object-like macro. The ## operator co…
目录(?)[-] 简单宏定义 带参数的宏 运算符 运算符 宏的通用属性 宏定义中圆括号 创建较长的宏 较长的宏中的逗号运算符 宏定义中的do-while循环do 空操作的定义 预定义宏 C语言中常用的宏 1. 简单宏定义 简单的宏定义有如下格式: [#define指令(简单的宏)] #define  标识符 替换列表 替换列表是一系列的C语言记号,包括标识符.关键字.数.字符常量.字符串字面量.运算符和标点符号.当预处理器遇到一个宏定义时,会做一个 “标识符”代表“替换列表”的记录.在文件后面的…