现在的位置: 首页 > 综合 > 正文

#defned typedef 以及#ifdef #define #ifndef #endif

2013年08月05日 ⁄ 综合 ⁄ 共 768字 ⁄ 字号 评论关闭

1、#define 和typedef区别

 

#define一般用于定义常量和语句宏定义,在编译的时候充当宏替换。当然也可以完成typedef的一小部分功能,记住只是一小部分。

typedef 用来声明新类型名,目的是为了可读性以及可定义变量性。

 

例子1:

#define INT  int  //没有分号!!

typedef int  INT;//记住typedef前面没有 #,以及该语句需要 ; 分号结束。

 

这个例子中,INT num;这样语句都能实现,基本没有区别。

 

例子2:

#define pINT  int*

typedef int* pINT;

这个例子就有区别了,要定义int*a,*b;  用define实现的是 pINT a,b;替换之后 int* a,b;变成定义的是指针a,和变量b。而typedef 用法,pINT a,b;定义的是指针变量a和指针变量b。

 

以在声明新类型名的时候要用typedef,为了安全性。

 

2、#define 、#if defined()、#ifndef、#ifdef、#else   #elseif  #endif

a)#define 定义常量,如#define  DEBUG 说明DEBUG已有定义

b)#if defined(DEBUG),如果只有一个条件,等同于#ifdef  DEBUG

     所以#if defined()常用于多条件限制的环境,多条件一般中间可以用“||、&& 、!”来形成多条件判断,如#if defined(EBUG)&& defined(WIN32)

     意思是当DEBUG 和WIN32都有定义的时候,才进入#if条件下的语句。

c)#ifdef DEBUG 如果定义了DEBUG ,执行#ifdef 条件下的语句。其意图与#ifndef DEBUG

相反,中间的n代表没有的意思,即如果没有定义。。。。

d)#endif  配对#if 配对

 

抱歉!评论已关闭.