Форум программистов, компьютерный форум, киберфорум
Arduino
Войти
Регистрация
Восстановить пароль
 
Рейтинг 4.67/9: Рейтинг темы: голосов - 9, средняя оценка - 4.67
92 / 8 / 0
Регистрация: 23.05.2016
Сообщений: 259
1

Объявление длинных массивов в дополнительных .ino

29.04.2021, 05:47. Показов 1800. Ответов 7
Метки нет (Все метки)

Здравствуйте.
Нужна небольшая консультация по ардуино.
В программе используется несколько одномерных массивов.
Т.к. эти массивы длинные (более 1000 значений в каждом) было решено выделить их в отдельные
файлы .ino чтобы не загромождать основной код.
В каждом таком файле присутствует строка примерно такого вида:
C
1
float Syp_5[] = {-5.188, 0.56, 20.196, ... };
При компиляции никаких ошибок не возникает.
Но как только я в loop включаю использование любого из этих массивов, например в виде:
C
1
 rm32 =  Syp_5[567];
я получаю ошибку:
'Syp_5' was not declared in this scope

Предполагаю, что объявление переменных, включая массивы, не могут быть включены в дополнительные файлы .ino

Есть ли способ решить эту проблему или все-таки придется включать все массивы в тело основного кода?
0
Programming
Эксперт
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
29.04.2021, 05:47
Ответы с готовыми решениями:

дополнительных массивов и файлов не использовать((
помогите решить задачу на СИ: вот условие исходное "В ИСХОДНОМ БИНАРНОМ ФАЙЛЕ (СОЗДАТЬ И ВВЕСТИ)...

Упорядочить массив размера N по возрастанию. Дополнительных массивов не использовать
Упорядочить массив размера N по возрастанию. Дополнительных массивов не использовать. Функции...

Упорядочить массив размера N по возрастанию. Дополнительных массивов не использовать
Упорядочить массив размера N по возрастанию. Дополнительных массивов не использовать.

Не используя дополнительных массивов переставить начало и конец массива
Помогите решыть задачу: Дан масив целых чисел x....x рассматриваемый как соединение двух его...

7
346 / 331 / 71
Регистрация: 18.03.2015
Сообщений: 1,168
29.04.2021, 08:09 2
C++
1
2
3
void loop() {
 float rm32 =  Syp_5[567];
}
Добавлено через 3 минуты
C++
1
2
3
4
5
6
7
8
9
float Syp_5[] = {-5.188, 0.56, 20.196, };
 
float rm32;
void setup() {
  }
 
void loop() {
  rm32 =  Syp_5[567];
}
0
4 / 2 / 2
Регистрация: 01.08.2016
Сообщений: 3
29.04.2021, 10:40 3
Лучший ответ Сообщение было отмечено ARTMED как решение

Решение

Выделить их в отдельный/отдельные *.h файл/файлы и подключить этот/эти *.h в основном ino.
1
92 / 8 / 0
Регистрация: 23.05.2016
Сообщений: 259
29.04.2021, 14:20  [ТС] 4
Сергей 190, само собой переменная rm32 заранее объявлена как float. И проблема не с переменной rm32, а с массивом, который основной .ino то ли не видит, то ли не желает его видеть как источник объявленных переменных. Кстати проблема даже не с массивом, а с переменной. То есть объявить переменную в дополнительном ino и попытаться использовать её в loop, получим ту же ошибку.

Feofanus, то есть дополнительный файл *.ino переименовываем в *.h и инклюдим его в основном .ino?

попробовал с описанием переменной в файле .h, и... получилось.
Счас массивы перелопачу.
0
4 / 2 / 2
Регистрация: 01.08.2016
Сообщений: 3
29.04.2021, 14:28 5
Лучший ответ Сообщение было отмечено ARTMED как решение

Решение

Цитата Сообщение от ARTMED Посмотреть сообщение
то есть дополнительный файл *.ino переименовываем в *.h и инклюдим его в основном .ino?
Если в дополнительный.ino не напихано ничего лишнего, то да. К примеру, #include "old_ino.h"
1
92 / 8 / 0
Регистрация: 23.05.2016
Сообщений: 259
29.04.2021, 14:35  [ТС] 6
Цитата Сообщение от Feofanus Посмотреть сообщение
Если в дополнительный.ino не напихано ничего лишнего, то да. К примеру, #include "old_ino.h"
Заработало!
0
Модератор
Эксперт по электронике
8380 / 6225 / 836
Регистрация: 14.02.2011
Сообщений: 21,606
29.04.2021, 20:04 7
Цитата Сообщение от ARTMED Посмотреть сообщение
Заработало!
это еще те грабли
и когда-нибудь это выстрелит
Изучайте С++, хотя бы основы
директива #include не подключает никакие библиотеки, как бы не утверждали ардуинщики, она просто переносит содержимое файла из одного в другой
в данном случае решение в использовании ключевого слова extern
0
С чаем беда...
Эксперт CЭксперт С++
8651 / 4321 / 1190
Регистрация: 18.10.2014
Сообщений: 9,394
04.05.2021, 10:12 8
Цитата Сообщение от ARTMED Посмотреть сообщение
было решено выделить их в отдельные файлы .ino чтобы не загромождать основной код.
Не надо заниматься заведением дополнительных файлов .ino. Пусть файл .ino будет только один.

Заведите дополнительные .h/.cpp файлы и объявите/определите эти массивы по старинке: в .cpp файле определение, а в .h файле - объявление.

.h файл включайте через #include везде, где вам нужен доступ к массиву.
0
IT_Exp
Эксперт
87844 / 49110 / 22898
Регистрация: 17.06.2006
Сообщений: 92,604
04.05.2021, 10:12

Заказываю контрольные, курсовые, дипломные работы и диссертации здесь.

Удалить числа из файла, без использования дополнительных массивов и файлов
Всем привет, насколько я понимаю, само удаление из файла и не удаление вовсе, открываем файл и...

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

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

Отсортировать числа в бинарном файле, не использу дополнительных файлов и массивов
Здравствуйте, дали такое задание, а что оно значит и как его делать не знаю. Отсортировать числа в...

Заполнить массив C цифрами произведения длинных чисел из массивов A и B
Массивы A (N), B (M) содержат цифры N-значного и M-значного чисел соответственно (1 <= N, M <=...

Объявление массивов
Здравствуйте! В учебнике по языку массивы объявляются так int arr = new int; В книге Шилдта...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
8
Ответ Создать тему
Опции темы

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2021, vBulletin Solutions, Inc.