我使用Arduino UNO(Arduino 1.8.3)。
这是我的代码:
void setup() {
Serial.begin(115200);
}
void loop() {
uint64_t num = 9223372036854775807;
Serial.print(num);
delay(1000);
}
这是错误消息:
退出状态1
调用重载'print(uint64_t&)'是不明确的
如何解决此错误?
答案 0 :(得分:1)
您可以在header中看到print()
uint64_t
没有过载。
你必须以某种方式对大数字进行编码,将它分成两个单独的uint32_t
,例如:
uint64_t num = 9223372036854775807;
uint32_t low = num % 0xFFFFFFFF;
uint32_t high = (num >> 32) % 0xFFFFFFFF;
Serial.print(low);
Serial.print(high);
显然,你必须在另一端重新组合它们。
答案 1 :(得分:1)
我就是这样做的。它很乱,但它完成了工作。
串行控制台的输出:9223372036854775807
void print_uint64_t(uint64_t num) {
char rev[128];
char *p = rev+1;
while (num > 0) {
*p++ = '0' + ( num % 10);
num/= 10;
}
p--;
/*Print the number which is now in reverse*/
while (p > rev) {
Serial.print(*p--);
}
}