在头文件中使用结构[C - Linux]

时间:2013-07-04 13:27:18

标签: c linux struct xdr

我尝试使用外部结构但是当我编译我的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;
}

3 个答案:

答案 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]