初始化程序无效 - 结构数组

时间:2016-05-06 05:37:07

标签: c struct

我在为cv分配值时遇到问题。根据我的下面的代码,我得到error: invalid initializer行:

ChVec cv = r->cv;

有人知道问题可能是什么吗?

感谢您的帮助。

tuple.c

#include "defs.h"
#include "tuple.h"
#include "reln.h"
#include "hash.h"
#include "chvec.h"
#include "bits.h"

Bits tupleHash(Reln r, Tuple t)
{
    ChVec cv = r->cv;
    ...
    ...
}

chvec.h

#include "defs.h"
#include "reln.h"

#define MAXCHVEC 32

typedef struct {
    Byte att;
    Byte bit;
} ChVecItem;

typedef ChVecItem ChVec[MAXCHVEC];

reln.h

#ifndef RELN_H
#define RELN_H 1

typedef struct RelnRep *Reln;

#include "defs.h"
#include "tuple.h"
#include "chvec.h"
#include "page.h"


struct RelnRep {
    Count  nattrs; // number of attributes
    Count  depth;  // depth of main data file
    Offset sp;     // split pointer
    Count  npages; // number of main data pages
    Count  ntups;  // total number of tuples
    ChVec  cv;     // choice vector
    char   mode;   // open for read/write
    FILE  *info;   // handle on info file
    FILE  *data;   // handle on data file
    FILE  *ovflow; // handle on ovflow file
};

2 个答案:

答案 0 :(得分:2)

类型ChVec是一个数组,您不能使用另一个数组初始化数组(就像您可以分配给数组变量一样)。

相反,您需要复制数组:

ChVec cv;
memcpy(cv, r->cv, sizeof cv);

答案 1 :(得分:2)

无法按照您的方式分配数组。

您必须使用ChVec cv; memcpy(cv, r->cv, sizeof(cv)); 复制内容:

php -dmemory_limit=4g script.php