我有一个处理lib的结构:
typedef struct {
uint8_t response_type;
uint8_t error_code;
uint16_t sequence;
uint32_t resource_id;
uint16_t minor_code;
uint8_t major_code;
uint8_t pad0;
uint32_t pad[5];
uint32_t full_sequence;
} a_structure;
Run Code Online (Sandbox Code Playgroud)
我的问题来自我不太了解的结构的pad [5]成员.我认为这个成员可以像以下那样用作其他成员:
uint8_t get_response_type( a_structure * my_struct)
{
return my_struct->response_type;
}
Run Code Online (Sandbox Code Playgroud)
但是这个功能:
uint32_t get_pad_5( a_structure * my_struct)
{
return my_struct->pad[5];
}
Run Code Online (Sandbox Code Playgroud)
在gcc中生成警告
错误数组下标在数组边界之上
有人能解释一下这意味着什么吗?
Thxs
结构字段pad定义为"5的数组uint32_t".您必须将变量定义与使用变量区分开来.因此,自pad定义以来,pad[5]意味着"获得pad数组的第五个(从0计数)元素".但是pad数组中没有这样的元素,因为这个数组可用的最高索引是4.
此外,您似乎想要返回指向此数组的第一个元素的指针,而不是第五个元素.所以你必须这样重写你的功能:
uint32_t * get_pad_5( a_structure * my_struct)
{
return my_struct->pad;
}
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
29549 次 |
| 最近记录: |