I'd like to know if it's possible to create a library for Arduino that does not contain a class, just functions.
I know how to create a library with a class, but I'd like to create a library of general purpose functions that don't need to be instantiated to be used. Just used like the standard functions included in the Arduino IDE: sizeof(), etc..
Is this possible? If so, can anyone point me in the direction of a template? I've been searching, but haven't found anything.
Thanks!
1 Answer 1
Yes, it's possible.
Just don't make a class. Just make functions instead.
Like a class-based one, have a .cpp
and a .h
file. In the .cpp
file (or .c
file if you don't want any of the C++ functionality or 90% of the Arduino API available to you) place your functions.
In the .h
file place prototypes for them. I am in the habit of adding the extern
keyword, but you don't actually need to for functions.
For example:
foo.cpp:
void doSomething() {
// whatever
}
foo.h:
extern void doSomething();
Then you can include your .h
file and call your functions:
#include <foo.h>
// ...
doSomething();
No new and delete keywords 2. No exceptions 3. No libstdc++, hence no standard functions, templates or classes
- most of that is nonsense. You can usenew
anddelete
these days. You can use templates and classes. You can get the STL (standard template library) from StandardCplusplus. You have standard functions likemalloc
,memcpy
,strcpy
, etc.You also will need to close the Arduino IDE when recompiling a library
- when I am developing a library I use a standalone editor for editing the library. I don't need to close the IDE to test it.