Помощь - Поиск - Пользователи - Календарь
Полная версия этой страницы: KEIL Выборочная инициализация массива в структуре
Форум разработчиков электроники ELECTRONIX.ru > Микроконтроллеры (MCs) > ARM
vlad_new
Порылся в инете, примеров много разных, но KEIL упорно на все ругается.
Есть возможность проинициализировать отдельный массив в структуре?
Надо заполнить константами Key.alt[].

struct _key
{
vu16 pin[20];
vu8 alt[5];
vu8 off[20];
vu32 flag_100;
};

struct _key Key;
Genadi Zawidowski
Если это на стеке - заполняйте memcpy (или присваивнием ко всем пяти элементам).
Если это инициализируемый до main - вы ничего не потеряете, если пропишите инициализацию всех элементов.
_Артём_
Так можно:
Код
struct _key
{
vu16 pin[20];
vu8  alt[5];
vu8  off[20];
vu32 flag_100;
struct _key(vu8 init_value) {
    alt[0]=init_value;
    .....
}
  
  };
KnightIgor
Цитата(vlad_new @ Jun 10 2012, 19:18) *
Надо заполнить константами Key.alt[].

struct _key
{
vu16 pin[20];
vu8 alt[5];
vu8 off[20];
vu32 flag_100;
};

struct _key Key;



Код
struct _key Key = {{0}, {1,2,3,4,5}, {0}, {0}};

vlad_new
Получилось. Всем спасибо.
sla000
Цитата(vlad_new @ Jun 12 2012, 08:43) *
Получилось. Всем спасибо.


Еще варианты:

Код
struct _key Key = {.alt = {0, 1, 2},};
struct _key Key2 = {alt : {0, 1, 2},};



Второй вариант может не прокатить, вроде это расширение для GCC.
vlad_new
Не. так не выходит. Это я уже пробывал. Так может прокатить только в С++, а в СИ приходится все элементы перечислять.
Сергей Борщ
QUOTE (vlad_new @ Jun 13 2012, 07:50) *
Так может прокатить только в С++, а в СИ приходится все элементы перечислять.
Как раз наоборот - в Си первый вариант легален, в С++ - нет. Второй вообще не встречал.
demiurg_spb
2tc: Добавьте опцию компиляции --C99 в поле misk control на вкладке с/c++ и тогда можно будет инитить поля структур по имени.
Цитата(Сергей Борщ @ Jun 13 2012, 10:00) *
Второй вообще не встречал.
Аналогично.
sla000
http://gcc.gnu.org/onlinedocs/gcc-4.6.3/gc...esignated-Inits

Another syntax which has the same meaning, obsolete since GCC 2.5, is `fieldname:', as shown here:

Код
struct point p = { y: yvalue, x: xvalue };


Хоть и obsolete, но GCC 4.6 это еще компилит, и TCC тоже.
Для просмотра полной версии этой страницы, пожалуйста, пройдите по ссылке.
Invision Power Board © 2001-2025 Invision Power Services, Inc.