O co chodzi z 'void value not ignored as it ought to be’?

Testując jakiś prosty szkic na Arduino IDE 1.6.7, natknąłem się na błąd, który w pierwszej chwili wydawał się zupełnie bez sensu…

void value not ignored as it ought to beProblem pojawia się w przypadku gdy mamy szkic w więcej niż jednej zakładce i spróbujemy użyć funkcji typu void (tak zdefiniowaliśmy add_two) tak jakby zwracała wartość ale w innej zakładce niż ta, w której ją zdefiniowaliśmy. Wówczas IDE podświetla dobrą linię ale w zakładce gdzie funkcję zdefiniowaliśmy, a nie gdzie źle użyliśmy funkcji. Jak trafi w jakąś przypadkową linię, wówczas komunikat błędu nie jest ani trochę pomocny. Wręcz przeciwnie.

W drugiej zakładce jest taki kod:

void setup() {
  Serial.begin(9600);
  int val = add_two();
  Serial.println(val);
  
}

void loop() {
}

I to tutaj w linii nr 3 jest miejsce które kompilator powinien wskazać. Czyli, próbujemy użyć add_two jak funkcji zwracającej wartość:

int val = add_two()

Cały kod przykładu do zobaczenia tutaj: https://gist.github.com/netmaniac/cbff2b5e6476f52a9d7c