Sketch su più file

Ciao

Sto prendendo confidenza con l'IDE di Arduino, ma non capisco come fare progettini su più file.

Esempio: file principale:

#include "pippo.h"

void setup() {
  // put your setup code here, to run once:

}

void loop() {
  // put your main code here, to run repeatedly:

  pippo_f();
}

file pippo.h:

extern void pippo_f(void);

file pippo.c:

void pippo_f(void)
{
  int a = 0;
  a++;
}

Ma mi da l'errore: undefined reference to `pippo_f()'

Ma mi pare corretto quello che ho scritto, o sbaglio? Sapete dirmi dove sta l'errore? Ho letto la documentazione, ma mi pare che vada bene quello che ho scritto....

Grazie a tutti

pippo.c deve includere pippo.h

e visto che stai usando il C, sarebbe meglio avvisare il compilatore (non ricordo bene come fare)

lesto: ... e visto che stai usando il C, sarebbe meglio avvisare il compilatore (non ricordo bene come fare)

Credo così :

#ifdef __cplusplus
 extern "C" {
#endif

void pippo_f(void);

#ifdef __cplusplus
 }
#endif

Guglielmo

esatto! confermo :slight_smile:

ok vi ringrazio, in effetti mi ero dimenticato.

Mi potete spiegare a cosa serve avvisare il compilatore? Cioè dove trovo della documentazione riguardo questa cosa?

Ad esempio quel codice lo devo mettere ovunque? O solo nel file principale?

ogni volta che crei un file (tab) in cui vuoi eseguire SOLO codice C divresti usarlo, per essere sicuro che non venga usato di soppiatto un comportamento del C++ (arduino è in C++ non in C)

Ho provato a mettere l'include anche nel file .c, ma continua a dare lo stesso erroree. Non trova la funzione nel file principale (dentro la funzione loop per intenderci). Ma come mai?

nel file .h dovresti togliere extern