浅谈VC中define的使用方法

1、用来定义常数

 例子:

#define  MAXTIME 60
int i;
for(i =0; i < MAXTIME; i++){
    //todo something
}

2、定义算式`

   例子:

 ①

#define  COUNTOF(array) (sizeof(array) / sizeof(*array) )

typedef struct{
  int num;
  char name[20];
  float score;
}student;
student stu[] ={
  {1001, "zhuque", 97.5},
  {1003, "zuozhu", 83 },
  {1004, "minren", 83 },
  {1007, "guaili", 78 },
  {1010, "xiaoli", 80 }
};

const student* FindStd(int number){
    int i;
    const student* std;

    std = stu;
    printf("sizeof(stu) = %d\n", sizeof(stu));
    printf("sizeof(*stu) = %d\n", sizeof(*stu));
    printf("COUNTOF(stu)=%d\n",COUNTOF(stu));
    for (i = 0; i < COUNTOF(stu); i++){
        printf("YES YOU CAN\n");
		if (std->num == number){
			printf("here\n");
			return std;
		}
		std++;
	}
	if( i >= COUNTOF(stu) ){
		return NULL;
	}
}

3、用来定义函数

#include <stdio.h>


int MAX(unsigned long, unsigned long, unsigned long);
#define RGB88(g,b) ((g)>(b)?(g):(b))
#define RGB888(r,g,b) MAX(r,g,b)


int MAX(unsigned long r, unsigned long g, unsigned long b){
	return RGB88(r,RGB88(g,b));
}


int main(){
	unsigned long r = 100,
				  g = 200,
				  b = 300;
	printf("THE MAX NUMBER IS [%d]\n", RGB888(r,g,b));
}
输出结果 300

4、用于结构体封装

#define GDefClass(GClassName,GSuperClass)\
struct GClassName {\
	GSuperClass gscBase;

#define GDefEnd\
	};

typedef struct GObject{
	char * name;
	int  iId;
	float score;
};

GDefClass(GBaseWindow,GObject)
	short nX;
	short nY;
	short nWidth;
	short nHeight;
GDefEnd

以上的 GDefClass( GBaseWindow,GObject)

             ....

             GDefEnd

就相当于

struct GBaseWindow {
	GObject  gscBase;
	short nX;
	short nY;
	short nWidth;
	short nHeight;
}

这个用法就像C++的类继承的功能,以上的用法就是实现了C中的结构体继承。



  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值