Я довольно новичок в C и задавался вопросом, могу ли я сначала инициализировать массив структур заданного размера, а затем заполнить массив фактическими структурами после объявления. Ниже приведен фрагмент кода, который я хочу сделать, это должно быть довольно просто.Можно заполнить массив структур после объявления?
/* Make rectangle 2D object */
struct two_d_obj rect = {0, 4, {0, 0, 1}, {0, 0}, {0, -20.0}, {{0, 0}, {0.1, 0.1}, {0, 0.1}, {0.1, 0}}};
struct two_d_obj obj_array[25];
obj_array[0] = rect;
Однако при попытке скомпилировать этот код, я получаю следующие ошибки:
hellomousept2.c:39: error: conflicting types for ‘obj_array’
hellomousept2.c:33: error: previous definition of ‘obj_array’ was here
hellomousept2.c:39: error: invalid initializer
Опять же, я новичок с C и прежде всего кода в Java, так что любая помощь, чтобы получить меня на правильном пути будет высоко оценена, и спасибо дается заранее.
EDIT: Ниже приведен код для моего two_d_obj структуры
struct two_d_obj
{
int iType; /*integer signifying shape of object (0 for rect, 1 for circle) */
int num_vertices; /* number of vertices contained in the shape */
double color[3]; /*array containing RGB values signifying color of object */
double center_pos[2]; /*center position of object */
double velocity[2]; /*velocity of object */
double vertex_array[50][2]; /*array of vertice coordinates (read in pairs
x coordinate followed by y coordinate)
protocol: first pair of coordinates is bottom left
vertice, pairs that follow are vertices going
counter-clockwise
*/
};
Какое вы определите 'two_d_obj'? – pablo1977
Кажется, что вы дважды объявили obj_array. Однажды на линии 33 и снова в строке 39. Это то, что сообщение компилятора пытается вам рассказать. –
@Kevin Lu проблема не в коде, который вы указали, добавьте объявление структуры. – zubergu