Arduino:函数错误的重新定义
Arduino: redefinition of a function error
“获取错误信息:
"error: 'int ButtonStateNext' previously declared here" (line 7 is
where the issue lies)
"exit status 1"
"redefinition of 'int ButtonStateNext'
每当我尝试编译我的 arduino 程序时……有人能解释一下到底出了什么问题吗?我知道错误消息告诉我我之前已经声明了 ButtonNextState,但是我没有看到我已经这样做了(至少,是故意的?)。下面是完整的代码(从最小的开始全部发布)谢谢。
String ButtonState;
int Pin = 4;
unsigned long timer;
int input;
//function that is to be called in loop to service
int ButtonNextState( input ) {
//Switch statement based on state
switch( ButtonState )
{
case Idle:
if(input == LOW)
{
//Record time
timer = millis();
//Set ButtonState to wait
ButtonState = "Wait";
}
break;
case Wait:
if(input == HIGH)
{
ButtonState = "Idle";
}
else if(timer >= 5)
{
ButtonState = "Low";
return 1;
}
break;
case Low:
if(input == HIGH)
{
ButtonState = "Idle";
}
break;
} //end of switch statement
return 0; // By default, return 0 indicating nothing is happening
}
void setup() {
//Set pin as input
input = 4;
//Set ButtonState to Idle
ButtonState = "Idle";
}
void loop() {
if( ButtonNextState( digitalRead( input ) ) )
{
//Send serial message indicating button press
Serial.write("Button Pressed.");
}
}
你这里有错字
if( ButtonNextState( digitalRead( input ) )
必须
if( ButtonNextState( digitalRead( input ) ) )
和
int ButtonNextState( input )
应该至少
int ButtonNextState( int input )
我最近遇到了同样的问题,但我的代码没有任何错误。我想我会分享,以防它对以后看这里的人有用。
之前误以为一个文件夹下可以有两个.ino文件,编译器只会看与文件夹同名的文件。事实并非如此,编译器会查看文件夹中的所有 .ino 文件。重新定义错误是因为两个文件共享相同的变量。
希望这对以后寻找类似问题的其他人有所帮助!
尝试将文件保存到其他地方,看看错误是否仍然存在。如果文件位于云端,我会遇到上述编译器问题。
“获取错误信息:
"error: 'int ButtonStateNext' previously declared here" (line 7 is where the issue lies)
"exit status 1"
"redefinition of 'int ButtonStateNext'
每当我尝试编译我的 arduino 程序时……有人能解释一下到底出了什么问题吗?我知道错误消息告诉我我之前已经声明了 ButtonNextState,但是我没有看到我已经这样做了(至少,是故意的?)。下面是完整的代码(从最小的开始全部发布)谢谢。
String ButtonState;
int Pin = 4;
unsigned long timer;
int input;
//function that is to be called in loop to service
int ButtonNextState( input ) {
//Switch statement based on state
switch( ButtonState )
{
case Idle:
if(input == LOW)
{
//Record time
timer = millis();
//Set ButtonState to wait
ButtonState = "Wait";
}
break;
case Wait:
if(input == HIGH)
{
ButtonState = "Idle";
}
else if(timer >= 5)
{
ButtonState = "Low";
return 1;
}
break;
case Low:
if(input == HIGH)
{
ButtonState = "Idle";
}
break;
} //end of switch statement
return 0; // By default, return 0 indicating nothing is happening
}
void setup() {
//Set pin as input
input = 4;
//Set ButtonState to Idle
ButtonState = "Idle";
}
void loop() {
if( ButtonNextState( digitalRead( input ) ) )
{
//Send serial message indicating button press
Serial.write("Button Pressed.");
}
}
你这里有错字
if( ButtonNextState( digitalRead( input ) )
必须
if( ButtonNextState( digitalRead( input ) ) )
和
int ButtonNextState( input )
应该至少
int ButtonNextState( int input )
我最近遇到了同样的问题,但我的代码没有任何错误。我想我会分享,以防它对以后看这里的人有用。
之前误以为一个文件夹下可以有两个.ino文件,编译器只会看与文件夹同名的文件。事实并非如此,编译器会查看文件夹中的所有 .ino 文件。重新定义错误是因为两个文件共享相同的变量。
希望这对以后寻找类似问题的其他人有所帮助!
尝试将文件保存到其他地方,看看错误是否仍然存在。如果文件位于云端,我会遇到上述编译器问题。