error: void value not ignored as it ought to be in Arduino
error: void value not ignored as it ought to be in Arduino
这是一个将1位数字转换为3位数字的函数。例如将“2”转换为“002”。
void loop() {
int x = convertdigit(time);
}
void convertdigit(int num){
char buffer[50];
int n;
n=sprintf (buffer, "%03d",num);
return buffer;
}
错误:void 值没有被忽略,因为它应该被忽略
/sketch/sketch.ino: In function 'void loop()':
/sketch/sketch.ino:33:30: error: void value not ignored as it ought to be
int x = convertdigit(time);
^
Error during build: exit status 1
我可以知道如何解决吗?
当你写这个的时候,你是在告诉编译器 convertdigit
没有 return 任何东西(void):
void convertdigit(int num)
当你写这个的时候,你是在告诉编译器使用 convertdigit
的 return 值并将它存储在 x
:
int x = convertdigit(num);
这两件事是冲突的:如果 convertdigit
没有 return 任何东西,你怎么能在 x
中存储任何东西?您的代码有点混乱,所以我不确定您的实际意图,但既然我已经解释了该错误消息,我希望您能够取得进展。
提示:如果您想要 convertdigit
到 return 和 int
,请将 void convertdigit(...
更改为 int convertdigit(...
。
您应该将数字 ( 2 ) 与文本“002”区分开来
void loop() {
static byte n = 1;
char* txt = convertdigit(n); // Convert to a 2 character text with a leading zero, if necessary;
Serial.println(txt);
delay(100);
n++;
if (n > 99) n=0;
}
char* convertdigit(byte num) {
static char buffer[4];
sprintf (buffer, "%02d", num);
return buffer;
}
static
需要在函数结束后保持变量可用(类似于全局变量):
n
在下一轮循环中保留其增加的值。
buffer
可通过 return 值在 converdigit()
return 之后获得。
这是一个将1位数字转换为3位数字的函数。例如将“2”转换为“002”。
void loop() {
int x = convertdigit(time);
}
void convertdigit(int num){
char buffer[50];
int n;
n=sprintf (buffer, "%03d",num);
return buffer;
}
错误:void 值没有被忽略,因为它应该被忽略
/sketch/sketch.ino: In function 'void loop()':
/sketch/sketch.ino:33:30: error: void value not ignored as it ought to be
int x = convertdigit(time);
^
Error during build: exit status 1
我可以知道如何解决吗?
当你写这个的时候,你是在告诉编译器 convertdigit
没有 return 任何东西(void):
void convertdigit(int num)
当你写这个的时候,你是在告诉编译器使用 convertdigit
的 return 值并将它存储在 x
:
int x = convertdigit(num);
这两件事是冲突的:如果 convertdigit
没有 return 任何东西,你怎么能在 x
中存储任何东西?您的代码有点混乱,所以我不确定您的实际意图,但既然我已经解释了该错误消息,我希望您能够取得进展。
提示:如果您想要 convertdigit
到 return 和 int
,请将 void convertdigit(...
更改为 int convertdigit(...
。
您应该将数字 ( 2 ) 与文本“002”区分开来
void loop() {
static byte n = 1;
char* txt = convertdigit(n); // Convert to a 2 character text with a leading zero, if necessary;
Serial.println(txt);
delay(100);
n++;
if (n > 99) n=0;
}
char* convertdigit(byte num) {
static char buffer[4];
sprintf (buffer, "%02d", num);
return buffer;
}
static
需要在函数结束后保持变量可用(类似于全局变量):
n
在下一轮循环中保留其增加的值。
buffer
可通过 return 值在 converdigit()
return 之后获得。