Ошибка при работе со структурой

gooroong
gooroong аватар
Offline
Зарегистрирован: 08.03.2015

Здравствуйте, подскажите пожалуйста, где моя ошибка, если вот это 

  struct SGtm {
    byte tm_min=0;      
    byte tm_hour=0;    
  };

  struct SGtm *tm_time; 
  
void setup() {
 
    Serial.begin(9600);
    while (!Serial); 
  
    tm_time->tm_hour=44;
    tm_time->tm_min=33;
    
    Serial.println(tm_time->tm_hour);
    Serial.println(tm_time->tm_min);

}

void loop() {
}

выдает вот это

c,
0

 

Penni
Penni аватар
Offline
Зарегистрирован: 18.01.2015

Память надо выделять...

tm_time = (SGtm*)malloc(sizeof(SGtm));

 

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

Плюс 2-3 строки. Нельзя инициализировать структуру при объявлении

gooroong
gooroong аватар
Offline
Зарегистрирован: 08.03.2015

kisoft пишет:
Плюс 2-3 строки. Нельзя инициализировать структуру при объявлении

Не понял. Можно поподробнее. Я использовал выше предложенный вариант - все заработало. Какие еще подводные камни?

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

gooroong пишет:
kisoft пишет:
Плюс 2-3 строки. Нельзя инициализировать структуру при объявлении
Не понял. Можно поподробнее. Я использовал выше предложенный вариант - все заработало. Какие еще подводные камни?

Скорее это я не прав. Такая инициализация появилась в C++11 (C++0x), раньше нельзя было так инициализировать (например ArduinoIDE v1.0.5 выдает ошибку). v1.6.3 ошибки не выдает.

Значит грабли только в одном, такую инициализацию можно использовать только в версиях, которые поддерживают стандарт C++11. Если пишите для себя, то пофиг.