Глюк в примере без кода

Zefman
Offline
Зарегистрирован: 09.08.2020

В моем скетче возникла ошибка:

"error: 'EthernetClientExtend' was not declared in this scope"
, хотя этот класс определен выше и используется по всей программе нормально.
Стал резать куски и дошел до следующего неработающего скетча:
 

void RTC_Time ()
{
}

void handleRTC ()
{
}

void handleEth ()
{
}

class EthernetClientExtend
{
  int m_int;
  EthernetClientExtend () : m_int(0)
  {}
};

void processCommand (EthernetClientExtend * a_pEthClientExt)
{
}

void setup ()
{
}

void loop ()
{
}

При компиляции выдает:

WebServer:21:21: error: variable or field 'processCommand' declared void
 void processCommand (EthernetClientExtend * a_pEthClientExt)
                     ^~~~~~~~~~~~~~~~~~~~
WebServer:21:21: error: 'EthernetClientExtend' was not declared in this scope
WebServer:21:44: error: 'a_pEthClientExt' was not declared in this scope
 void processCommand (EthernetClientExtend * a_pEthClientExt)
                                            ^~~~~~~~~~~~~~~
C:\Users\Zefman\Documents\Arduino\project\udp_http\WebServer\WebServer.ino: In function 'void processCommand(EthernetClientExtend*)':
C:\Users\Zefman\Documents\Arduino\project\udp_http\WebServer\WebServer.ino:21:45: warning: unused parameter 'a_pEthClientExt' [-Wunused-parameter]
 void processCommand (EthernetClientExtend * a_pEthClientExt)
                                             ^~~~~~~~~~~~~~~
exit status 1
variable or field 'processCommand' declared void
 

Но если удалить или переместить в конец первую функцию, то все компилируется нормально.

В чем причина такого легкого поведения Arduino v1.8.13 - ?

 
 
sadman41
Offline
Зарегистрирован: 19.10.2016

Вынесите декларацию в рядом лежащий .h файл и подключите его в начале ino. У Arduino IDE "горе от ума" часто происходит.

Zefman
Offline
Зарегистрирован: 09.08.2020

Спасибо, помогло.

Хотя я решил проблему добавлением слова "class " в processCommand(1), т.е.:

void processCommand (EthernetClientExtend * a_pEthClientExt)
{
}

 

Zefman
Offline
Зарегистрирован: 09.08.2020
void processCommand (class EthernetClientExtend * a_pEthClientExt)
{
}