相关疑难解决方法(0)

什么是零元素阵列的需要?

在Linux内核代码中,我发现了以下无法理解的内容.

 struct bts_action {
         u16 type;
         u16 size;
         u8 data[0];
 } __attribute__ ((packed));
Run Code Online (Sandbox Code Playgroud)

代码在这里:http://lxr.free-electrons.com/source/include/linux/ti_wilink_st.h

零元素数据数组的需求和目的是什么?

c structure

117
推荐指数
4
解决办法
8289
查看次数

访问C中零长度数组地址时的编译错误

可能重复:
零长度数组与指针

一些新的编译器会针对以下情况抛出编译错误

struct test {
int length;
char data[0];
};

int main(void)
{
char string[20] = {0};
struct test *t;

//Some code

memcpy(string, t->data, 19); //Compilation error 
}
Run Code Online (Sandbox Code Playgroud)

但是,如果我这样做,这会得到解决.

memcpy(string, &(t->data[0]), 19);
Run Code Online (Sandbox Code Playgroud)

某些新编译器执行此限制的原因是什么?

编辑纠正错误

c

2
推荐指数
1
解决办法
529
查看次数

标签 统计

c ×2

structure ×1