Creo que aqui estan confundiendo un poco los conceptos. Arduino generalemente se programa en c++ no en c. Podriamos decir q c++ es una extension de c. Por lo tanto cualquier cosa que hagas en c puede ser leida o compilada por c++. KILLERJC te dio una explicacion de como crear una libreria utilizando c no c++. Es decir, el sugiere lo siguiente:
max.h:
#ifndef max_h
#define max_h
int max(int num1, int num2);
#endif
max.c (si no me equivoco deberia ser max.cpp):
int max(int num1, int num2)
{
/* local variable declaration */
int result;
if (num1 > num2)
result = num1;
else
result = num2;
return result;
}
ahora para convertir max.c a max.cpp lo unico que tienes que hacer es cambiar la extension y el compilador la leera igual. No estoy seguro si Arduino IDE compilara archivos *.c como si fuesen *.cpp.
La variable que retorna ¿se debe de declarar como publica?
Desde el punto de vista de c no existen variables publicas o privadas. En este caso la funcion esta siendo declarada como global por ende puede ser accedida desde cualquier lugar (metodo, funcion o clase). En c solo existen 2 tipos de varialbes: locales y globales.
- Locales cuando son declaradas dentro de una funcion.
- Globales cuando son declaradas fuera de una funcion.
En c++ si existen variables privadas y publicas:
- Privadas: solo pueden ser accedidas por la clase a la q pertenecen.
- Publicas: pueden ser accedidas desde cualquier otro lugar (metodo, clase o funcion)
¿Se escribe sin guion bajo en los 2 archivos de la libreria?
No, el guion bajo se usa generalmente para declarar variables privadas. Esto es opcional. Es decir, el guion bajo es meramente documentativo para decirle a otros desarrolladores cuando lean tu codigo que la variable es privada sin necesidad de q tengan que ir a ver el archivo *.h.
Si quieres crear una libreria en c++ mira este link:
http://www.arduino.cc/en/Hacking/LibraryTutorialhttp://www.arduino.cc/en/Hacking/LibraryTutorial