我使用 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&)'存在歧义
我该如何解决这个错误?
我使用 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&)'存在歧义
我该如何解决这个错误?
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--);
}
}
#include <stdint.h>
char* str( uint64_t num ) {
static char buf[22];
char* p = &buf[sizeof(buf)-1];
*p = '\0';
do {
*--p = '0' + (num%10);
num /= 10;
} while ( num > 0 );
return p;
}
char* str( int64_t num ) {
if ( num>=0 ) return str((uint64_t)num);
char* p = str((uint64_t)(-num));
*--p = '-';
return p;
}
void setup() {
int64_t num = -92233720368547758L;
Serial.print( str(num) );
}
char* getInt64Str( int64_t num ) {
int64_t numAbs = abs(num);
static char buf[22];
char* p = &buf[sizeof(buf)-1];
*p = '\0';
do {
*--p = '0' + (numAbs%10);
numAbs /= 10;
} while ( numAbs > 0 );
if( (byte)((num & bit(64))>>63) == 1 ){
*--p = '-';
}
return p;
}
int64_t
的实现。不需要修改原始内容。 - Henrique Bucher