Получить значение переменной по названию
- Войдите на сайт для отправки комментариев
Ср, 20/03/2019 - 12:26
Добрый день!
Что вписать вместо <var_name>?
void debug(String var_name) { Serial.println(var_name + ": " + <var_name>); }
Ничего. Serial.println() не работает с String+String
Что вписать вместо <var_name>?
Хороший вопрос! А надо-то что?
Что вписать вместо <var_name>?
Ничего. Так, как вы хотите - работать не будет. Для компилятора между переменной var_name и строкой "var_name" нет никакой связи. Внутри скомпилированной программы у переменных нет имен, компилятор заменяет их на адреса в памяти. где хранятся соответсвующие данные.
Ничего. Serial.println() не работает с String+String
Да, нет, почему? Разве у String нет оператора + ? Результатом будет String, а с ним сериал вполне работает. Или я что-то путаю?
Ахтыж... постоянно забываю, что String не char[].
Но имени переменной всё равно не получить.
Печально
Забываю все время, что это микроконтроллер
Ничего. Serial.println() не работает с String+String
но работает со Стрингом, то-есть надо сформировать переменную запихав в неё всё, что надо вывести
Печально
Забываю все время, что это микроконтроллер
причем тут "микроконтроллер"? Подобного трюка Вы не сможете проделать в программе на С и на большом компе.
Забываю все время, что это микроконтроллер
А какая разница мико или макроконтроллер?
Хотите делать такие фокусы на "ардуине", берите искру-js - там сколько угодно :)
Ахтыж... постоянно забываю, что String не char[].
Но имени переменной всё равно не получить.
А если так- #define MACRO_VARIABLE_TO_STRING(Variable) (void(Variable),#Variable)
Serial.printf
хм....
проще надо, проще :)
С одной стороны - решение есть, с другой - оно не является ответом на изначальный вопрос.
Гы - смешно: ТС свалил, а топы мериются причиндалами. :)
ИМХО - В #1 Евгений спросил все.