免费注册 查看新帖 |

ChinaUnix.net

  平台 论坛 博客 文库
最近访问板块 发新帖
查看: 10241 | 回复: 8

typedef struct cpu_set_t ; 这个怎么理解呀? [复制链接]

论坛徽章:
0
发表于 2010-06-09 10:42 |显示全部楼层
我经常碰到类似的句子,怎么都理解不了。今天又看到一个是在头文件里的。大体如下:
#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);
..........................


这里的typedef struct cpu_set_t ;到底是起个什么作用,我怎么从来没见过呢?请高手稍微详细地解释下,我实在是困扰了好多天了,书上看不到这样的句子解释。

论坛徽章:
0
发表于 2010-06-09 12:23 |显示全部楼层
也不是清楚啊,帮你顶一下了

论坛徽章:
0
发表于 2010-06-09 12:34 |显示全部楼层
回复 1# wohenry84

我的理解,这个跟直接struct a;来声明一下结构类型a的功能是一样的。就是声明一下这个typedef的cpu_set_t类型

论坛徽章:
0
发表于 2010-06-09 12:43 |显示全部楼层
本帖最后由 lyreopera 于 2010-06-09 12:46 编辑

这是一个不完整的声明,告诉编译器有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 */
};

另一个作用是信息隐藏,我在gdsl里面学来的

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

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




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

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

论坛徽章:
0
发表于 2010-06-09 12:53 |显示全部楼层
4l正解

是不是linux才能这么写
hp上不能

declaration requires a typedef name

论坛徽章:
0
发表于 2010-06-09 13:26 |显示全部楼层
这是定义了这个一个类型而已,

我的体会是在以后定义结构体的时候方便了很多,不用再加上struct了,呵呵

论坛徽章:
0
发表于 2010-06-09 13:34 |显示全部楼层
那这个句子是不是具有跨文件的可见性呢?
我的意思就是说,如果在这个文件没有定义,但是就只有这个typedef struct cpu_set_t ;
下面也可以用cpu_set_t 这个类型来定义别的变量呀?我们不是常见这样的都是采用extern来声明吗?

论坛徽章:
0
发表于 2010-06-09 13:50 |显示全部楼层
cpu_set_t 具体化为一种struct  可以理解为定义变量的时候把struct换成cpu_set_t就行了

论坛徽章:
0
发表于 2010-06-10 11:48 |显示全部楼层
楼上的好像都说明了,呵呵
我用到的地方也是,隐藏c,cpp文件里的真实类型实现,h文件里用到的只是指针。
还有一个是可以省略struct :)
另外 extern 是引用 外部对象 吧,用处和声明类型不同
您需要登录后才可以回帖 登录 | 注册

本版积分规则 发表回复

基于案例的 SQL 优化实战训练营

讲师:中电福富特级专家梁敬彬,参与本次课程培训,你将收获:
1. 能编写出较为高效的 SQL;
2. 能解决70%以上的数据库常见优化问题;
3. 能得到老师提供的高效的相关工具和解决方案;
4. 能举一反三,收获不仅仅是 SQL 优化。
现在购票享受8.8折优惠!
----------------------------------------
优惠时间:2019年3月20日前

大会官网>>
  

北京盛拓优讯信息技术有限公司. 版权所有 16024965号-6 北京市公安局海淀分局网监中心备案编号:11010802020122
中国互联网协会会员  联系我们:huangweiwei@it168.com
感谢所有关心和支持过ChinaUnix的朋友们 转载本站内容请注明原作者名及出处

清除 Cookies - ChinaUnix - Archiver - WAP - TOP