9 votos

¿Qué debo saber a la hora de hacer una biblioteca para el Arduino?

Se me ocurre que, más allá de mi problema actual, debo preguntar, "¿Qué debo saber a la hora de hacer una biblioteca para el Arduino?"

En primer lugar, lo que yo estoy haciendo:

Estoy usando Eclipse como mi editor y escribir el código en C++. He escrito una simple aplicación Arduino que incluye mi archivo de encabezado y estoy trabajando a través de los errores.

Primer problema: ¿cómo hago para que se 'limpia'? Estoy viendo los errores que creo que me he fijado, casi como si el encabezado del archivo se almacena en caché. (Sí, bastante probable, de que estoy haciendo algo estúpido [editar: I], pero yo todavía me gustaría saber cómo limpiar la biblioteca, y no sé dónde está el objeto de archivos).

En segundo lugar: ¿qué convenios se debe tener en cuenta? No he usado el Arduino tanto como me gustaría, y se siente tan bien estar de programación en C++, pero sé que la intención de las bibliotecas es mantener las cosas bonitas y sencillas para los usuarios. Hay convenciones para los nombres de función? La creación de constantes (parece que el espacio de nombres global está contaminada con #define)? Y así sucesivamente.

Por último, ¿hay algo más que debería saber?

Debo mencionar que he mirado en el Arduino Tutorial bibliotecario, lo cual es bueno, pero no ir muy lejos. También he hizo acto de presencia en algunas de las bibliotecas que se han instalado en mi sistema.

3voto

intrepion Puntos 3973

Voy a tomar una puñalada. Yo no he escrito el código para Arduino, pero he hecho un montón de C y C++ programación. Sería de ayuda si en realidad lo vi tus errores, pero no obstante.

La principal cosa que usted necesita recordar siempre que el uso de C++ con C código es que su código de C++ necesidades de las funciones declaradas con "extern "C"" si desea que el código C para ser capaz de enlace con el código de C++. El "extern "C"" es lo que dice el compilador de C++ que estoy creando vinculables código para C archivos o estoy utilizando el código de C archivos. De modo que todas sus funciones en la biblioteca de encabezado de la API debe correlacionarse con una función en el archivo de origen se define gustó "extern "C" void dosomething()". Si estás tratando de usar clases en C++, recuerde que el código de C no puede llamar a esto, usted necesita para crear funciones (extern "C") para acceder al objeto. Ahora, si tu código C compilado con un compilador de C++, entonces no se preocupe acerca de "extern "C"".

Si desea llamar a código C en el interior de su código de C++, entonces usted necesita para envolver el encabezado de C con una construcción como esta:

#ifdef ___cplusplus
extern "C" {
#endif

///all my C function declarations... yada yada

#ifdef __cplusplus
}  //end extern "C"
#endif

Si estás trabajando en C++, no uso mucho un #define a menos que usted está creando en tiempo de compilación banderas como "DEPURACIÓN" o "VERSION2" para crear conjuntos especiales de código. De lo contrario, el uso de "const int/char/float" para el número define para la seguridad de la comprobación de tipos. Los compiladores son generalmente lo suficientemente inteligente para optimizar estos, para que el viento en ROM/espacio de código (depende). También, no se pueden crear MACROS, usar funciones inline. Además, no siempre siguen la convención cuando la programación si es estúpido, tales como el uso de una gran cantidad de macros y número define en C++. Lo mismo se aplica a C99 versión de C, se ha añadido cosas como las funciones inline y consts de C++. La industria se da cuenta de cuánto código erróneo y duro para mantener el código viene por el uso excesivo del preprocesador idioma.

Eclipse generalmente almacena los archivos obj en un directorio de tu proyecto. Si usted está haciendo una "Depuración" construir, a continuación se encuentra bajo la "Depuración" de la carpeta bajo la carpeta de proyecto. Si usted está haciendo una "Liberación" construir, a continuación, busque en la sección "Liberación", etc. Normalmente una compilación limpia solo me funciona en Eclipse, así que no sé lo que está mal con su configuración. Supongo que asegurarse de que no está la creación de encabezados precompilados.

i-Ciencias.com

I-Ciencias es una comunidad de estudiantes y amantes de la ciencia en la que puedes resolver tus problemas y dudas.
Puedes consultar las preguntas de otros usuarios, hacer tus propias preguntas o resolver las de los demás.

Powered by:

X