Всем привет! Я пишу под ESP32, но опубликовал сюда, чтобы пост увидело больше людей. Есть проблема: я написал структуру и функцию Код (C++): struct ui_state_t { bool up; bool down; bool left; bool right; bool center; bool back; }; ui_state_t Read_UI() { //TODO: приделать и реализовать кнопки ui_state_t ui_state; ui_state.up = false; ui_state.down = false; ui_state.left = false; ui_state.right = false; ui_state.center = false; ui_state.back = false; if (!Serial.available()) { return ui_state; } else { char c = Serial.read(); switch (c) { case 'w': ui_state.up = true; break; case 's': ui_state.center = true; break; case 'x': ui_state.down = true; break; case 'a': ui_state.left = true; break; case 'd': ui_state.right = true; break; case 'q': ui_state.back = true; break; } } return ui_state; } Однако, компилятор выдаёт ошибку, что Скажите пожалуйста, как обойти проблему
Вы структуру как тип и как объект различаете. Проще запись int a; int это тип a это объект. http://cppstudio.com/post/7008/
Если структура вам нужна в глобальном неймспейсе, то определите синоним для нее в нем Код (C++): typedef struct ui_state_t ui_state_t Иначе обращайтесь к структуре как к структуре Код (C++): struct ui_state_t Read_UI() {
Вообще, возвращать сложные типы по значению - это ламерство. Возвращайте ссылку на структуру. Это тем более актуально, когда вы пишете для микроконтроллера, где каждый байт на счету.