Инициализация массива объектов структуры, где эти объекты ранее были сохранены в переменных структуры - PullRequest
0 голосов
/ 16 октября 2019

Я определил структуру следующим образом:

struct Profile { 
char name[15]; // Name of profile for displaying to screen later
int numberOfPulses;  // Number of pulses that will occur for one Profile run
int lengthOfPulse;  // Length (uSec) of each pulse produced
int timeBetweenPulses;  // Time (uSec) between consecutive pulse outputs
}

Затем я создаю несколько объектов этого типа структуры, сохраняя каждый из них в соответствующей переменной.

struct Profile defaultP = {"Default", 1, 100, 0}; 
struct Profile repeat3 = {"Repeat_3", 3, 100, 2000};
struct Profile shortPulse = {"Short_50us", 1, 50, 0};
struct Profile shortPulseRepeat3 = {"Sh_50_R3", 3, 50, 2000};
struct Profile longPulse = {"Single_300", 1, 300, 0};
struct Profile longPulseRepeat3 = {"Sin_300_R3", 3, 300, 2000};
struct Profile custom = {"Custom", 1, 100, 0};

Last,Я пытаюсь присвоить эти переменные массиву, и именно здесь я получаю много ошибок, включая несоответствие типа и / или переопределения и т. Д.

struct Profile profileArray[] = {defaultP, repeat3, shortPulse, shortPulseRepeat3, longPulse, longPulseRepeat3, custom};

Я действительно не понимаю, что я делаю неправильно,но я неопытный и ожидаю, что это какая-то проблема указателя. Важным примечанием является то, что я должен определять мои переменные struct Profile индивидуально, как я, потому что они вызываются позже в программе. Спасибо.

1 Ответ

0 голосов
/ 16 октября 2019

Вы пытаетесь инициализировать массив значением переменных. Это приводит к ошибке, что инициализаторы не являются константами. Вместо этого используйте:

struct Profile *profileArray[] = {&defaultP, &repeat3, &shortPulse, &shortPulseRepeat3, &longPulse, &longPulseRepeat3, &custom};

Теперь это массив указателей на Profile структуры.

Обратите внимание, что работа с их значениями теперь изменит значения в исходных структурах, например:

profileArray[0]->numberOfPulses++;

меняет значение defaultP.numberOfPulses

...