внешние проблемы с массивом структур c ++ - PullRequest
1 голос
/ 01 сентября 2010

У меня есть основной файл .cpp с этим:

#include "stdafx.h"
#include "Form1.h"
#include <iostream>
...
#include <stdio.h>

const int MAX_LEN = 1000;

struct DataLine {
    char StartCode;
    int ByteCount;
    int Address;
    int RecType;
    int DBytes[16];
    int Checksum;
};
DataLine AllData[MAX_LEN];  

Тогда у меня есть form.h со следующим:

extern const int MAX_LEN;  
extern struct DataLine AllData[MAX_LEN]; 
//later on in header file  
AllData[index].Startcode = sc;
AllData[index].ByteCount = i_Byte_Count;  
...

Это не скомпилирует, выдав множество ошибок, но первое: 'DataLine *' : unknown size Должен ли я изменить определенные вещи на typedef? Я не совсем уверен, почему это не нравится.

Ответы [ 2 ]

2 голосов
/ 01 сентября 2010

Вы не можете определить

extern struct DataLine AllData[MAX_LEN];

в заголовочном файле, потому что struct DataLine полностью неизвестен в заголовочном файле. Нет typedef поможет вам здесь. Определение struct DataLine должно присутствовать в заголовочном файле, прежде чем вы определите AllData. Переместите его туда.

1 голос
/ 01 сентября 2010

Поскольку декларация struct DataLine должна быть form.h перед определением AllData

По сути, вы говорите другим файлам, что они могут сказать:

 DataLine* pre = &AllData[5];

Теперь, как компилятор может узнать, где находится далеко от начала AllData этот элемент, если он точно не знает, насколько велика каждая DataLine?

...