|
Переменное число аргументов, почему так не работает?
|
|||
---|---|---|---|
#18+
есть процедура: Код: plaintext 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. 13. 14. 15. 16. 17. 18. 19. 20. 21. 22. 23. 24. 25. 26. 27. 28. 29. 30.
процедура в таком виде не выводит текст из параметров, если закомментировать Serial.printf(format, arg), а остальное раскомментировать, то выводит. Закомментированный кусок это содержимое Print::printf Как сделать правильно чтобы не писать весь код printf? ... |
|||
:
Нравится:
Не нравится:
|
|||
23.10.2018, 15:01 |
|
Переменное число аргументов, почему так не работает?
|
|||
---|---|---|---|
#18+
vvvait Код: plaintext 1. 2. 3.
Все правильно, это не должно работать, т.к. Serial.printf() вторым аргументом врядли поддерживает значения типа va_list. Вам нужен второй вариант этой функции - Serial.vprintf который бы принимал va_list, и потом например печатал его через vsnprintf или аналоги. ... |
|||
:
Нравится:
Не нравится:
|
|||
23.10.2018, 15:20 |
|
Переменное число аргументов, почему так не работает?
|
|||
---|---|---|---|
#18+
спасибо, я думал что va_list передаётся как эти три точки к сожалению у этого Serial нет функции vprintf ... |
|||
:
Нравится:
Не нравится:
|
|||
23.10.2018, 15:48 |
|
Переменное число аргументов, почему так не работает?
|
|||
---|---|---|---|
#18+
vvvait, Если у вас С++ 11 и выше, то можно обойтись вообще без va_list. Код: plaintext 1. 2. 3. 4. 5. 6. 7. 8. 9.
Тогда текущая версия Serial.printf подойдет без изменений. ... |
|||
:
Нравится:
Не нравится:
|
|||
23.10.2018, 16:19 |
|
Переменное число аргументов, почему так не работает?
|
|||
---|---|---|---|
#18+
vvvait, Можно выполнить vsprintf в буфер и передать через Serial.printf("%s", buf); ... |
|||
:
Нравится:
Не нравится:
|
|||
23.10.2018, 17:32 |
|
Переменное число аргументов, почему так не работает?
|
|||
---|---|---|---|
#18+
Anatoly Moskovsky, спасибо, именно этого и хотелось ... |
|||
:
Нравится:
Не нравится:
|
|||
24.10.2018, 13:07 |
|
Переменное число аргументов, почему так не работает?
|
|||
---|---|---|---|
#18+
Anatoly MoskovskyЕсли у вас С++ 11 и выше, то можно обойтись вообще без va_list. С макросом это было бы короче: Код: sql 1. 2.
Posted via ActualForum NNTP Server 1.5 ... |
|||
:
Нравится:
Не нравится:
|
|||
24.10.2018, 13:11 |
|
Переменное число аргументов, почему так не работает?
|
|||
---|---|---|---|
#18+
Dimitry SibiryakovAnatoly MoskovskyЕсли у вас С++ 11 и выше, то можно обойтись вообще без va_list. С макросом это было бы короче: Код: sql 1. 2.
Макрос должен быть поскольку это отладочные сообщения. Если мы говорим о С++ то я бы использовал оператор << что то типа такого Код: sql 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. 13. 14. 15.
ещё один нюанс для ТС - отладочное сообщение в порт лучше выводить одной строкой чтобы не вклинивались сообщения из других нитей. ... |
|||
:
Нравится:
Не нравится:
|
|||
24.10.2018, 14:26 |
|
Переменное число аргументов, почему так не работает?
|
|||
---|---|---|---|
#18+
Dimitry SibiryakovС макросом это было бы короче: Не будет работать для пустого списка аргументов. ... |
|||
:
Нравится:
Не нравится:
|
|||
24.10.2018, 15:20 |
|
Переменное число аргументов, почему так не работает?
|
|||
---|---|---|---|
#18+
Anatoly MoskovskyНе будет работать для пустого списка аргументов. Для GNU CPP - будет: https://gcc.gnu.org/onlinedocs/cpp/Variadic-Macros.html Posted via ActualForum NNTP Server 1.5 ... |
|||
:
Нравится:
Не нравится:
|
|||
24.10.2018, 16:17 |
|
|
start [/forum/topic.php?fid=57&fpage=16&tid=2017739]: |
0ms |
get settings: |
9ms |
get forum list: |
12ms |
check forum access: |
3ms |
check topic access: |
3ms |
track hit: |
22ms |
get topic data: |
11ms |
get forum data: |
2ms |
get page messages: |
59ms |
get tp. blocked users: |
2ms |
others: | 13ms |
total: | 136ms |
0 / 0 |