OpenEdv-开源电子网

 找回密码
 立即注册
正点原子全套STM32/Linux/FPGA开发资料,上千讲STM32视频教程免费下载...
查看: 6171|回复: 5

c语言中的宏定义,搞不清楚

[复制链接]

2

主题

8

帖子

0

精华

新手上路

积分
36
金钱
36
注册时间
2012-9-18
在线时间
0 小时
发表于 2012-12-2 00:20:04 | 显示全部楼层 |阅读模式
 #define CLASS(type) \
typedef struct type type; \
struct type

搞不清楚这个是什么意思。。。求解释。
正点原子逻辑分析仪DL16劲爆上市
回复

使用道具 举报

530

主题

11万

帖子

34

精华

管理员

Rank: 12Rank: 12Rank: 12

积分
165309
金钱
165309
注册时间
2010-12-1
在线时间
2108 小时
发表于 2012-12-2 10:33:06 | 显示全部楼层
我也没看明白,高手指点下吧。
我是开源电子网www.openedv.com站长,有关站务问题请与我联系。
正点原子STM32开发板购买店铺http://openedv.taobao.com
正点原子官方微信公众平台,点击这里关注“正点原子”
回复 支持 反对

使用道具 举报

2

主题

8

帖子

0

精华

新手上路

积分
36
金钱
36
注册时间
2012-9-18
在线时间
0 小时
 楼主| 发表于 2012-12-2 14:38:34 | 显示全部楼层
不好意思,我说得不详细。。下面为完整的出处

lw_oopc.h

/*         lw_oopc.h: MISOO团队设计的C宏                                        */


#include <malloc.h>

#ifndef LW_OOPC
#define LW_OOPC

#define CLASS(type)       \
typedef struct type type; \
struct type

#define CTOR(type)        \
void* type##New()         \
{                         \
struct type *t;        \
t = (struct type*)malloc(sizeof(struct type));

#define CTOR2(type, type2)     \
void* type2##New()             \
{                              \
struct type *t;             \
t = (struct type*)malloc(sizeof(struct type));   

#define END_CTOR return (void*)t; }
#define FUNCTION_SETTING(f1, f2) t->f1 = f2;
#define IMPLEMENTS(type) struct type type
#define INTERFACE(type) struct type

#endif
回复 支持 反对

使用道具 举报

2

主题

8

帖子

0

精华

新手上路

积分
36
金钱
36
注册时间
2012-9-18
在线时间
0 小时
 楼主| 发表于 2012-12-4 19:44:22 | 显示全部楼层
回复【3楼】vvooo2009:
---------------------------------
高手指点下。
回复 支持 反对

使用道具 举报

34

主题

805

帖子

4

精华

论坛大神

Rank: 7Rank: 7Rank: 7

积分
1863
金钱
1863
注册时间
2011-3-29
在线时间
139 小时
发表于 2012-12-5 11:40:13 | 显示全部楼层
第一第二行好理解,第三行不好理解。
CLASS(type)是怎么使用的?估计后面得加个变量名称吧?这样才说得通。
业余程序玩家。
回复 支持 反对

使用道具 举报

36

主题

1263

帖子

1

精华

论坛大神

Rank: 7Rank: 7Rank: 7

积分
1612
金钱
1612
注册时间
2012-6-15
在线时间
39 小时
发表于 2013-2-5 10:13:30 | 显示全部楼层
这个 是 类似于实现C++一个类的作用  ,

说下调用方法 就明白了。 

CLASS (MyABC )   //ABC 相当于一个类名
{
        int  a;
        int  b;
        char c;
};

CTOR(myABC)   //创建为MyABC 分配内存的函数 名字为 myABCNew(...)  相当于 构造函数

FUNCTION_SETTING(a,10);  //初始赋值
FUNCTION_SETTING(b,20);
FUNCTION_SETTING(c,'A');

END_CTOR

CTOR2(myABC, TABC) //创建为MyABC 分配内存的函数 名字为 TABCNew(...) 相当于 另一个构造函数 

FUNCTION_SETTING(b,3);

END_CTOR
回复 支持 反对

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则



关闭

原子哥极力推荐上一条 /2 下一条

正点原子公众号

QQ|手机版|OpenEdv-开源电子网 ( 粤ICP备12000418号-1 )

GMT+8, 2024-11-23 16:27

Powered by OpenEdv-开源电子网

© 2001-2030 OpenEdv-开源电子网

快速回复 返回顶部 返回列表