本篇文章给大家谈谈_packed在c语言里,以及c语言package对应的知识点,希望对各位有所帮助,不要忘了收藏本站喔。
本文目录一览:
1、C/C++语言中struct结构体定义中__packed的作用是什么?2、C语言中的typedef 定义结构体的问题。3、C语言程序里的错误,请高手帮忙指教一下
C/C++语言中struct结构体定义中__packed的作用是什么?
这个你不用思考了~想不通的
__packed是字节对齐的意思。
比如说int
float
double
char它的总大小是4
+
4
+
8
+
1
=
17
但如果你不用__packed的话,系统将以默认的方式对齐(假设是4字节),那么它占4
+
4
+
8
+
4
=
20;(不足4字节以4字节补齐)。
但在VS2008上述方法不能用了(低版本我没有试过),如果想设置对齐方式,只要选择工程属性-配置属性-C/C++-代码生成就能设置,它的选项有1、2、4、8、16。在GCC下,可以在加上#pragma
pack(4)
4字节对齐的意思,其它同理。
C语言中的typedef 定义结构体的问题。
替代 __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;
C语言程序里的错误,请高手帮忙指教一下
par[i].cc = wv_init_channel(
owidth,
oheight,
channel_params[i].data,
max_bits / num_channels,
((max_bits = 0) (channel_params[i].max_mse == 0.0f)),
(i == 0) ? NULL : par[0].cc-num_blocks,
(i == 0) ? NULL : par[0].cc-reorder_table,
prog_func,
(void*)((num_channels 16) + i));
能否把wv_init_channel函数的原型贴一下,
还有,_packed 好像是用于说明字节对齐的关键字,是不是某个结构体的定义有误?
_packed在c语言里的介绍就聊到这里吧,感谢你花时间阅读本站内容,更多关于c语言package、_packed在c语言里的信息别忘了在本站进行查找喔。