Вывод переменной int64_t в Serial.println

O'NeiLL
Offline
Зарегистрирован: 13.08.2014

Доброго дня, возникла следующая проблема есть переменная типа int64_t. Компилятор ругается на то что я вывожу её в Serial.println.  (картинка кликабельна)

  int64_t  r = 1;

  Serial.println(p);

 Выдаёт ошибку: call of overloaded 'println(int64_t&)' is ambiguous


Как сделать перевод и нужно ли? Как правильно записать?

leshak
Offline
Зарегистрирован: 29.09.2011

Боюсь что "в лоб" - никак.
Ошибку переводили? Вольный перевод: "не могу понять что ты хочешь, вызова с таким точно таким типом параметра - нет. похожих - несколько".
И дальше, оно вам приводит, какие варианты println - с примерно похожими параметрами.

 

D:\AVR\arduino-1.0.4\hardware\arduino\cores\arduino/Print.h:67: note: candidates are: size_t Print::println(const __FlashStringHelper*) <near match>
D:\AVR\arduino-1.0.4\hardware\arduino\cores\arduino/Print.h:68: note:                 size_t Print::println(const String&) <near match>
D:\AVR\arduino-1.0.4\hardware\arduino\cores\arduino/Print.h:69: note:                 size_t Print::println(const char*) <near match>
D:\AVR\arduino-1.0.4\hardware\arduino\cores\arduino/Print.h:70: note:                 size_t Print::println(char)
D:\AVR\arduino-1.0.4\hardware\arduino\cores\arduino/Print.h:71: note:                 size_t Print::println(unsigned char, int)
D:\AVR\arduino-1.0.4\hardware\arduino\cores\arduino/Print.h:72: note:                 size_t Print::println(int, int)
D:\AVR\arduino-1.0.4\hardware\arduino\cores\arduino/Print.h:73: note:                 size_t Print::println(unsigned int, int)
D:\AVR\arduino-1.0.4\hardware\arduino\cores\arduino/Print.h:74: note:                 size_t Print::println(long int, int)
D:\AVR\arduino-1.0.4\hardware\arduino\cores\arduino/Print.h:75: note:                 size_t Print::println(long unsigned int, int)
D:\AVR\arduino-1.0.4\hardware\arduino\cores\arduino/Print.h:76: note:                 size_t Print::println(double, int)

Как видим, ни одного даже примерно похожего на int64_t - нет. Так что никакия "правильная запись" (приведени типов и т.п.) - нас не спасет. println - просто не умеет работать с таким типом (и правильно, требуется это редко, а ресурсов - мало).

Значит выводить нужно "вручную".
Либо разбивать int64_t на два int32 и выводить их  - я бы выбрал этот путь, если вывод в 16-ти ричном формате устраивает. да и проще он.
Либо, если хочется все-таки десятичный вывод, разбирать число на цифры и выводить цифры по одной.