打印

请问下边这个宏定义怎么理解?

[复制链接]
737|3
手机看帖
扫描二维码
随时随地手机跟帖
跳转到指定楼层
楼主
wang12zhe|  楼主 | 2015-3-31 20:40 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
#define CLASS(type)\
typedef struct type type; \
struct type

这个宏定义是在《UML+OOPC嵌入式C语言开发精讲》 看到的
该怎么理解??

相关帖子

沙发
lanfeng0107| | 2015-4-21 22:37 | 只看该作者
本帖最后由 lanfeng0107 于 2015-4-25 11:27 编辑

应该是这样:
假如你自己定义一个结构体,是这样:
struct  type
    {
      int a;
      char b;
    }
然后,不是这样用吗  ---   struct type  test  (其实 不就类似于 int test 嘛!)

这里 struct  type  就是一个结构体类型


用typedef 给  struct type  起一个别名 就叫做 type    ok?


那么就是这样了: typedef   struct type  type  ;


好,既然这是一句定义了(其实就是起名的一句话),那么 就可以用宏来替换的了
所以,干脆:

# define  CLASS(type)  typedef struct type type ;

ok?再定义一个结构体类型: struct type

这样,就成了:
# define  CLASS(type)  typedef struct type type ;
struct  type

完。

使用特权

评论回复
板凳
wang12zhe|  楼主 | 2015-4-24 08:36 | 只看该作者
lanfeng0107 发表于 2015-4-21 22:37
应该是这样:
加入你自己定义一个结构体,是这样:
struct  type

你说的我能理解
但是我认为你解释到第二句
那么 第三句的 struct type  怎么理解  和前两句有什么关系

使用特权

评论回复
地板
Blacknc| | 2015-4-24 15:12 | 只看该作者
wang12zhe 发表于 2015-4-24 08:36
你说的我能理解
但是我认为你解释到第二句
那么 第三句的 struct type  怎么理解  和前两句有什么关系 ...

第三句是类型名,只要知道宏定义只是简单的替换就会明白了,比如
CLASS(stack) {
    int head;
    int tail;
};
会被替换为
typedef struct stack stack;
struct stack {
    int head;
    int tail;
};

使用特权

评论回复
发新帖 我要提问
您需要登录后才可以回帖 登录 | 注册

本版积分规则

101

主题

205

帖子

1

粉丝