C语言中的typedef 定义结构体的问题。

#ifdefSYSTEM_USE_ARM_LINUX#definestPACKED__attribute__((packed))#else#definestPACKED#... #ifdef SYSTEM_USE_ARM_LINUX
#define stPACKED __attribute__((packed))
#else
#define stPACKED
#endif
typedef struct {
//成员名省略

} stPACKED MDIN_4CHVIDEO_INFO;
上面代码结构体的stPACKED 是什么作用。
展开
 我来答
匿名用户
推荐于2016-10-24
展开全部
替代 __attribute__((packed))
当然只在 LINUX 下有效果

所以前边有
#ifdef SYSTEM_USE_ARM_LINUX
来做为约束条件

在非LINUX 系统下 stPACKED 就是空了

这是为了提高代码的可移植性

__attribute__((packed)) 是 LINUX 下c语言扩展的语法
windows下c语言里是没有的

在LINUX下替换后是

typedef struct {
//成员名省略

} __attribute__((packed)) MDIN_4CHVIDEO_INFO;

在windows下替换后是

typedef struct {
//成员名省略

} MDIN_4CHVIDEO_INFO;
hzl880201
2012-07-09 · 超过53用户采纳过TA的回答
知道小有建树答主
回答量:188
采纳率:100%
帮助的人:114万
展开全部
typedef其实就是为结构体类型定义了一个新的名字,别名,你可以用stPACKED去定义一个该结构体对象,例如stPACKED st;相当于int i; int 就是整型类型的类型名,stPACKED也是个类型名,它表示你定义的那个结构体类型,不是具体的变量.
本回答被网友采纳
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
White_MouseYBZ
2012-07-09 · TA获得超过4万个赞
知道大有可为答主
回答量:2.1万
采纳率:82%
帮助的人:6379万
展开全部
typedef struct {
//成员名省略
} stPACKED MDIN_4CHVIDEO_INFO;
——这种写法好像有点问题:用间隔隔开的stPACKED和 MDIN_4CHVIDEO_INFO只能要一个;也可能是下面形式,这样的话是对的:
...
}stPACKED;
stPACKED MDIN_4CHVIDEO_INFO;
以上是用typedef关键字声明stPACKED是你新创建的结构体的标识符,以后就可以用它来声明新的这种结构体变量。
这了说明方便,把你的结构具体定义如下:
typedef struct {//创建一个具有1个长度为10的字符串、1个整型变量和1个单精度浮点变量的结构体.
char a[10];
int nDec;
float x;
}stPACKED;//用typedef声明stPACKED是这个结构体的标识符.
stPACKED MDIN_4CHVIDEO_INFO;//用标识符stPACKED声明一个结构体变量MDIN_4CHVIDEO_INFO
这与下面的写法是等价的:
struct ABC{//
char a[10];
int nDec;
float x;
};//
typedef ABC stPACKED
stPACKED MDIN_4CHVIDEO_INFO;
struct ABC{//
char a[10];
int nDec;
float x;
}MDIN_4CHVIDEO_INFO;

struct ABC MDIN_4CHVIDEO_INFO;
在C++中还能直接写成:
ABC MDIN_4CHVIDEO_INFO;
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
821162922
2012-07-09 · TA获得超过333个赞
知道答主
回答量:130
采纳率:0%
帮助的人:64.6万
展开全部
ifdef条件宏,作用:宏命名,防止重复命名(即重复定义)
格式:
#ifdef 宏名(检测是否定义过名称,如果定义过则跳过)
#define 宏名
#endif
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
收起 更多回答(2)
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式