我尝试使用外部结构但是当我编译我的c代码时,我获得了这条消息:
subscripted value is neither array nor pointer nor vector
。
为什么?
messaggio.h
struct Request {
struct {
u_int data_len;
float *data_val;
} data;
bool_t last;
};
typedef struct Request Request;
main.c
#include "messaggio.h"
int main(void){
struct Request x;
x.data[0] = 4.6;
printf("%f\n",x.data[0]);
return 0;
}
答案 0 :(得分:2)
x.data
是一个结构,因此您无法使用[]
。也许你想要x.data.data_val[0]
。
试试这段代码:
struct Request x;
x.data.data_len = 5; // initialize the length, use any value you need
x.data.data_val = (float *) malloc(x.data.data_len * sizeof(float));
x.data.data_val[0] = 4.6
答案 1 :(得分:0)
x.data
是一个结构而不是数组。
如果您正在尝试访问,请使用x.data.data_val[0]
。但是,您尚未为data_val
分配任何内存。我相信您正在尝试为data_len
分配一个号码,并且需要分配内存以保留data_len
中的data_val
值。
答案 2 :(得分:0)
struct Request#data的类型是匿名结构{u_int,float}而不是数组。因此,您不能在其上使用[]运算符。
您可能想要这样做:
x.data.data_val[0]