как присвоить значение переменной являющийся частью структуры при ее объявлении

Vладимир
Offline
Зарегистрирован: 27.01.2015

всем привет 

как присвоить значение переменной являющийся частью структуры  при ее объявлении

struct S_key
{
   byte pinkeyup=3;
   byte pinkeydown;
} key;

 

Vладимир
Offline
Зарегистрирован: 27.01.2015

приведенный пример не компелируется , и возможноли это вообще ??

kisoft
kisoft аватар
Offline
Зарегистрирован: 13.11.2012

Первая же ссылка в гугл http://www.prostocpp.narod.ru/initialization_of_structures.html
Может научиться искать пора?

Datak
Offline
Зарегистрирован: 09.10.2014

Но самое интересное - у меня приведённый пример как раз очень даже "компелируется". :)

Опять, что ли, какие-то особенности собственных стандартов GCC-компилятора?

Vладимир
Offline
Зарегистрирован: 27.01.2015

приведённая вами ссылка не является ответом на вопрос, так как присвоение происходит не в теле объявления, а отдельно, и напроч теряется читаемость кода ,А ЕСЛИ ВСТРУКТУРЕ МАССИВ вообще караул

----

у меня версия 1.0.6

kisoft
kisoft аватар
Offline
Зарегистрирован: 13.11.2012

Ок, если не ясно, то члены структур в Вашем объявлении нельзя инициализировать, согласно стандарта. Если gcc в очередной раз отличился, то я рад за Вас. Продолжайте компЕлировать дальше.

Чтобы не было недопонимания, я привёл ссылку как правильно инициализировать структуры, не нравится, дело Ваше. Язык такой, пишите Страуструпу и иже с ним, пусть они для Вас особый язык напишут.

 

Vладимир
Offline
Зарегистрирован: 27.01.2015

Ок, если не ясно, то члены структур в Вашем объявлении нельзя инициализировать, согласно стандарта.

именно этого ответа я и ожидал , но надеялся на лучшее

kisoft
kisoft аватар
Offline
Зарегистрирован: 13.11.2012

Есть вариант для C++, добавить в структуру конструктор. На практике бывает нужно крайне редко.
Я с телефона, не могу вставить код, покажу так:
struct key
{
int val;
int num;
key()
{
val = 3;
num = 5;
}
};

Datak
Offline
Зарегистрирован: 09.10.2014

По-моему, описать структуру одновременно с объявлением можно не только в GCC, но я бы сделал это так:



struct
{
   byte pinkeyup;
   byte pinkeydown;

} key = { 3, 0 };

Опять же, не совсем уверен, а проверять сейчас не хочу - поздно уже. Так что, если ошибся - мои извинения.

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



typedef struct _S_KEY
{
   byte pinkeyup;
   byte pinkeydown;

} S_KEY;

.....

S_KEY Key = { 3, 0 };

-----

У меня Arduino IDE 1.5.7