结构中的结构数组?

时间:2016-08-18 10:30:48

标签: c struct structure

我有一个结构Register和一个结构ModbusReadStructRegister声明如下:

typedef struct {
    int TypeID;
    char InstrumentType[32];
    char RegTag[32];
    char Protocol[32];
    int RegNum;
    char RW[32];
    char RegisterType[32];
    char Signed[32];
    char Inverted[32];
    char DataType[32];
    int Counts;
} Register;

我想声明结构ModbusReadStruct,如下所示:

typedef struct {
    int Address;
    int Port;
    int BaudRate;
    int DataBits;
    int StopBits;
    int RegID;
    int Sampling;
    char InstanceName[32];
    int InstNum;
    int MBNum;
    int PortNum;
    int RegNum;
    Register Register[64];
} ModbusReadStruct;

然而,这种确切的实现会导致错误(Segmentation Fault)。实现与上述想法类似的功能的最佳方法是什么?

1 个答案:

答案 0 :(得分:1)

您发布的结构声明完全正确,除了您对类型和Register的结构成员名称使用相同的标识ModbusReadStruct

分段错误表明您的代码存在问题,而不是结构声明本身。

EOF 所述,如声明的那样,ModbusReadStruct结构的大小约为17KB。虽然在现代PC上可以使用自动存储(也称为堆栈)分配这样的对象,但是嵌入式系统上的堆栈空间可能要小得多。分配足够大小的ModbusReadStruct的本地数组也是一个问题。