C语言中常用宏定义
来源:互联网 发布:易语言股票源码 编辑:程序博客网 时间:2024/06/11 18:31
下面是一些比较重要的宏定义,记录一下:
assert断言:
#define assert(cond) ((cond)?(void)0:_assert(#cond,__FILE__,__LINE__))void _assert(char*cond,char*filename,long lineno)
{
printf("assert:%s in file:%s, at line:%d\n",cond,filename,lineno);
}
获得结构体中域的偏移量
#define offsetof(type,field) ((int)((char*)&(((type*)0)->f)-(char*)(type*)0))
#define OFFSETOF(type,field) ((int)&(((type*)0)->f)
大小写转换
#define toupper(ch) ((ch)+'A'-'a')
#define tolower(ch) ((ch)+'a'-'A')
三个数中求最大
#define max(a,b,c) ((a)>(b)?((a)>(c)?(a):(c)):((b)>(c)?(b):(c)))
#define MAX(a,b,c) ((a)>((b)>(c)?(b):(c))?(a):((b)>(c)?(b):(c)))
#define SET(n,i) ((n)|(1u<<i)) //置1
#define RESET(n,i) ((n)&~(1u<<i)) //复位
#define TOGGLE(n,i) ((n)^(1u<<i)) //取反
#define TEST(n,i) !!((n)&(1u<<i)) //测试
#define ROTL(val,n) (((val)<<n)|((val)>>(sizeof(val)*8-n)))
#define ROTR(val,n) (((val)>>n)|((val)<<(sizeof(val)*8-n)))
异或(XOR)逻辑运算
#define XOR(a,b) (((a)||(b))&&!((a)&&(b)))
宏实现SWAP交换
#define SWAP(x,y) ((x)==(y)?NULL:((x)^=(y),(y)^=(x),(x)^=(y)))#define SWAP_(x,y) (temp=x,x=y,y=temp)//在使用前定义一个和x,y同类型的tmp临时变量
- C语言中常用的宏定义
- C语言中常用宏定义集锦
- c语言中常用宏定义
- C语言中常用宏定义
- C语言常用宏定义
- C语言常用宏定义
- C语言常用宏定义
- C语言常用宏定义
- C语言常用宏定义
- C语言常用宏定义
- C语言常用宏定义
- C语言常用宏定义
- C语言常用宏定义
- C语言常用宏定义
- C语言常用宏定义
- C语言常用宏定义
- C语言常用宏定义
- C语言常用宏定义
- [LeetCode] Reverse Linked List I II - 链表翻转问题
- 内联函数的使用及注意点
- 【Linux网络编程】LAN、WAN、WLAN、VLAN和VPN的区别
- (转)android 如何获取手机信息总结
- Java TreeMap 源码解析
- C语言中常用宏定义
- 环境变量(Path,ClassPath)在计算机中的用处。
- Ajax跨域
- 浮点数的比较
- com.android.ide.common.process.ProcessException: org.gradle.process.internal.ExecException: Process
- 可以输出自己的源程序代码(quine)
- css学习绝对定位、相对定位
- Hibernate学习随笔-----关系映射(1)单向N-1关联
- Centos6.3编译安装nginx+php步骤