总结typedef用法

经常碰到typedef使用,今天又看到一个是在头文件里的。大体如下:

{{{ #define _GNU_SOURCE
#include <sched.h>
typedef struct cpu_set_t ;
size_t CPU_SETSIZE ;

void CPU_SET(unsigned long cpu , cpu_set_t *set);
void CPU_CLR(unsigned long cpu , cpu_set_t *set);

....................}}}
(就是很多类似的函数声明)

int sched_setaffinity(pid_t pid , size_t setsize , const cpu_set_t *set);


comment1:

这是一个不完整的声明,告诉编译器有struct cpu_set_t 这么一个类型。

一个常用的地方是:假如A、B两个结构互相包含对方的指针:

typedef struct A;
typedef struct B;

struct A
{
    struct B *ptr;
    /* other stuff */
};

struct B
{
    struct A *ptr;
    /* other stuff */
};

另一个作用是信息隐藏

/* type.h */
typedef struct _type Type;

void type_XXX (Type *type);
/* ... */

/* type.c */
#include "type.h"

struct _type
{
    /* ... */
};

comment2:


这是定义了一个类型而已,在以后定义结构体的时候方便了很多,不用再加上struct了


 

总结:

typedef用来声明新的类型名来代替已有的类型名

1. typedef  int INTEGER;

   typedef float FLOAT;


    INTEGER a,b; FLOAT a,b

2. 可以用来声明结构体类型

typedef struct

{ int month;

  int day;

  int year;

}DATE;

声明新类型名DATE,它代表上面指定的一个结构体类型。这时就可以用DATE定义变量

DATE birthday;

DATE *p;  // p为指向此结构体类型数据的指针


还可以进一步:

  • typedef int NUM[100];  (声明NUM为整形数组类型)

              NUM n;                           (定义n为整形数组变量)

  •  typedef char *STRING; (声明STRING为字符指针类型)

              string p,s[10];               (p为指针变量,s为指针数组)

  • typedef int (*POINTER)   (声明POINTER为指向函数的指针类型,该函数返回整形值)
             POINTER p1,p2;             (p1、p2为POINTER类型的指针变量)

 故typedef就是用如同定义变量的方法来声明一个类型


Note:

typedef 与#define有相似之处:

      typedef int COUNT;

和 #define COUNT int

作用都是用COUNT代表int。而#define是在预编译时处理的,它只能作简单的字符串替换,而typedef是在编译时处理的,作用是声明一个类型





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

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值