当前位置: 技术问答>linux和unix
柔性数组问题再次请教:
来源: 互联网 发布时间:2016-07-30
本文导语: 柔性数组问题再次请教: 一个带柔性数组的结构体: struct abc{ ..... ..... struct def{ ... unsigned char variable[0]; }; }; 如果程序中有访问variable元素的话.如: struct abc* temp; unsigned int len; len = ...
柔性数组问题再次请教:
一个带柔性数组的结构体:
struct abc{
.....
.....
struct def{
...
unsigned char variable[0];
};
};
如果程序中有访问variable元素的话.如:
struct abc* temp;
unsigned int len;
len = (unsigned char*)temp->def.variable - (unsigned char*)temp;
这个在linux的gcc下可以编译OK. 但是标准的ansc不支持这种写法. 如果是ANSI标准的编译器来编译的话. 应该如何修改以上代码?
一个带柔性数组的结构体:
struct abc{
.....
.....
struct def{
...
unsigned char variable[0];
};
};
如果程序中有访问variable元素的话.如:
struct abc* temp;
unsigned int len;
len = (unsigned char*)temp->def.variable - (unsigned char*)temp;
这个在linux的gcc下可以编译OK. 但是标准的ansc不支持这种写法. 如果是ANSI标准的编译器来编译的话. 应该如何修改以上代码?
|
gcc 的特性,0长数组
如果想换ansic ,去掉 unsigned char variable[0];
换用sizeof
如果想换ansic ,去掉 unsigned char variable[0];
换用sizeof
|
要取得结构体偏移见
http://topic.csdn.net/u/20100112/16/0a3cd777-c7d9-4602-8eaa-dfe20b10dbb7.html
零长数组作用
http://topic.csdn.net/u/20100116/17/57c98309-0d9e-4b9c-83a9-da1619291359.html
http://topic.csdn.net/u/20100112/16/0a3cd777-c7d9-4602-8eaa-dfe20b10dbb7.html
零长数组作用
http://topic.csdn.net/u/20100116/17/57c98309-0d9e-4b9c-83a9-da1619291359.html