I have implemented C++ queue in my codes, those I run on my PC.
Now I'm programming an ATmega128 micro-controller to implement a
.c code. Can I use that
Will it work?
If not please suggest me a
queue to implement.
Electrical Engineering Stack Exchange is a question and answer site for electronics and electrical engineering professionals, students, and enthusiasts. It only takes a minute to sign up.Sign up to join this community
It is very well possible to use C++ on the AVR. Arduino has been doing it for ages. Unfortunately, avr-g++ does not ship with a C++ standard library (the successor to the old STL), so you have to rely on C++ core language features. C++, just like C, has many features that don't map well to small microcontrollers; you need to find out which ones. For starters, exceptions, RTTI (
delete, and anything that requires those (especially standard library containers like
queue) don't really work here. Typical microcontroller programs use ring buffers and fixed arrays instead.
On the other hand, classes (including virtual functions), templates/Metaprogramming,
constexpr, proper constants, avoiding macros, function overloads and RAII can be put to good use without sacrificing efficiency.
To compile C++ code, substitute calls to
avr-gcc with calls to
avr-g++. Make sure to use a recent version, since C++ support is in active development.
You can use C++ with avr-gcc but not STL. I'm writing
std for avr-gcc, except the code that use dynamic memory (so you can't use std::vector or std::queue) and exceptions. You can check my implementation:
It compiles with avr-gcc-9.2.0.