美文网首页
C-宏的一些常用使用

C-宏的一些常用使用

作者: 金牛茶馆 | 来源:发表于2019-04-25 20:02 被阅读0次

常用:

#include <iostream>
#include <string.h>

using namespace std;

//定义类型的别名
typedef unsigned char byte;
typedef unsigned short word;

//获得一个变量的地址(byte或word宽度)
#define B_PTR(var)  (byte*)((void *)(&var))
#define W_PTR(var)  (word*)((void *)(&var))

//得到指定地址上的一个字节或字
#define MEN_B(arr) *((byte*)arr)
#define MEN_W(arr) *((word*)arr)

//得到一个字的高位和低位字节
#define  WORD_LO(xxx)  ((byte) ((word)(xxx) & 255)) // == &0xff
#define  WORD_HI(xxx)  ((byte) ((word)(xxx) >> 8))  // == /256

//获得结构体成员在结构体中偏移量
#define STRUCT_MEN_POS(type,member) (unsigned int)&((type *)0)->member
//得到一个结构体中成员变量所占用的字节数
#define STRUCT_MEN_SIZE(type,member) sizeof( ((type*)0)->member )

//返回数组元素的个数
#define ARR_SIZE(arr) sizeof(arr)/sizeof(arr[0])

//使用#把宏参数变为一个字符串,用##把两个宏参数贴合在一起
#define STR(s) #s
#define STR2(a,b) a##b

struct student
{
    char name[10];
    int age;
    int id;
} my_student;

int main(void)
{
    int a = 23;

    //获得一个变量的地址: 0X28FEA8
    cout << W_PTR(a) <<endl;
    //得到指定地址上的一个字: 23
    cout << MEN_W(W_PTR(a)) <<endl;

    //获得结构体成员在结构体中偏移量: 12 (要求为4的整数倍)
    cout << STRUCT_MEN_POS(struct student,age) << endl;
    //得到一个结构体中成员变量所占用的字节数: 10
    cout << STRUCT_MEN_SIZE(struct student,name) << endl; //10

    //使用#把宏参数变为一个字符串: abc
    cout << STR(abc) << endl;
    //用##把两个宏参数贴合在一起: 234
    cout << STR2(2,34) << endl;
}
  • 本文作者:Jack Yao
  • 本文链接: c_macro
  • 版权声明:本博客所有文章除特别声明外,均采用 BY-NC-SA 许可协议。转载请注明出处!

相关文章

  • C-宏的一些常用使用

    常用: 本文作者:Jack Yao 本文链接: c_macro 版权声明:本博客所有文章除特别声明外,均采用 BY...

  • iOS 常用宏定义

    iOS 开发中使用一些常用宏定义可以大大提高开发效率,提高代码的重用性.以下是一些常用的宏定义: 像这些宏定义,在...

  • ios 常用宏定义

    虽然这是一篇介绍常用宏定义的文章,先介绍下这个的缺点 使用:你可以把代码中一些常用复杂的方法打包成宏定义来使用 l...

  • iOS开发中常用到的宏

    大家都是知道使用宏不仅方便,而且可以提高开发效率。下面总结了iOS开发过程中的一些常用宏。

  • vim 编辑命令详解

    高级一些的编辑器,都会包含宏功能,vim当然不能缺少了,在vim中使用宏是非常方便的 常用选项

  • ##宏与const

    宏与const 宏与const 的使用: 宏的用法: 一般字符串抽成宏,代码抽成宏使用。 const用法:一般常用...

  • iOS-OC中常见的一些宏

    自己常用的一些宏

  • RAC使用

    RAC常用宏 KVO监听使用 RAC宏使用 信号类使用 使用信号模拟代理 rac_sequence遍历字典 解包元...

  • ReactiveObjC 源码阅读笔记 (RACObserve(

    常用KVO宏 RACObserve(<#TARGET#>, <#KEYPATH#>) 使用: 源码 宏定义 NSO...

  • 我在iOS项目中常用的宏,提高不少效率,持续更新。。。

    在项目中合理的使用一些宏,可以很大的提高代码效率,代码简洁度!下面我就列举一些我常用的宏,随着项目的进行,我会持续...

网友评论

      本文标题:C-宏的一些常用使用

      本文链接:https://www.haomeiwen.com/subject/arofeqtx.html