• C语言中常用宏定义


     下面是一些比较重要的宏定义,记录一下:

    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临时变量
  • 相关阅读:
    ASP.NET登录记住用户名
    .NET枚举类型转为List类型
    display:inline-block 去除间隙
    sublime text 3 常用快捷键 、常用插件
    使用背景图代码
    Photo Shop 修改、维护
    前端协作流程
    Photo Shop切图
    Photo Shop 设置
    Flex 弹性布局
  • 原文地址:https://www.cnblogs.com/xkfz007/p/2420161.html
Copyright © 2020-2023  润新知