Electronicdesign 9413 124381promo
Electronicdesign 9413 124381promo
Electronicdesign 9413 124381promo
Electronicdesign 9413 124381promo
Electronicdesign 9413 124381promo

Checking Out C++14

Aug. 25, 2014
Technology Editor Bill Wong takes C++14 for a test drive using Eclipse.

C++ has continued to garner more market share from C and the latest C++14 standard will help to continue this trend (see “C++14 Adds Embedded Features”). Most C/C++ developers are using compilers that support both but C still takes precedence for many for a variety of reasons. Support for legacy code is one reason. Corporate mandates are another. Unfortunately many stay away because of perceived complexity, inefficiency or that fact that it is an object oriented programming (OOP) language.

It is true that C++ is complex and it does support OOP. On the other hand, it is essentially a superset of C with OOP to complement the procedural features (see “Bjarne Stroustrup Talks About C++14”). The latest version adds a number of simple but very useful features like user defined literals. It also has the auto keyword that lets the compiler figure out the type of a value which is already knows. Even embedded C programmers will appreciate the binary literals and digit separator. This allows statement like:

auto a1 = 0b1011111101011011;
auto a2 = 0b1011'1111'0101'1011;

I decided to get some hands on use of C++14. Most of this support has been in a lot of compilers for a while now. Unfortunately, some of the embedded development systems I have been working with didn’t have the latest so I had to download the latest version of Eclipse, code name Kepler, and the GNU C compiler. I tried it out on Fedora 20 since I had that installed on one of my lab machines.

The Eclipse and GNU tool installation was a simple yum install since the tools are in the Fedora repository. The C++14 support is still new so I had to enable it via command line options for the compiler. It is just matter of adding -std=c++14 in the right spot. That happens to be under the GCC Built In Compiler Settings. After that, my sample C++14 apps worked rather nicely.

I had a chance to play with the user defined literals. I don’t think templates work very well for the definition side but templates are useful for handling data type operations. I have just being working with the basics like weight and distance. Time is already handled by the new STL (standard template library) support.

I also had a chance to work with the C++11 features. I really had not given them a thorough workout and the C++11 change list was even more extensive. Features like generic lambda expressions got added to the mix. These are nameless functions although they are more like closures because you can capture local values as variables that are global with respect to the function. Lambdas were also a recent addition to Java (see “Lambda: Reclaiming An Old Concept”).

If you use C++ then enjoy checking out the latest C++11 and C++14 features. They are worth the effort and make programming easier and clearer. If you are still stuck with C then check out C++. It is definitely better and it can actually be more efficient and safer in the long run. You just need to know what the compiler is doing and that is true for any programming language.

Sponsored Recommendations

Highly Integrated 20A Digital Power Module for High Current Applications

March 20, 2024
Renesas latest power module delivers the highest efficiency (up to 94% peak) and fast time-to-market solution in an extremely small footprint. The RRM12120 is ideal for space...

Empowering Innovation: Your Power Partner for Tomorrow's Challenges

March 20, 2024
Discover how innovation, quality, and reliability are embedded into every aspect of Renesas' power products.

Article: Meeting the challenges of power conversion in e-bikes

March 18, 2024
Managing electrical noise in a compact and lightweight vehicle is a perpetual obstacle

Power modules provide high-efficiency conversion between 400V and 800V systems for electric vehicles

March 18, 2024
Porsche, Hyundai and GMC all are converting 400 – 800V today in very different ways. Learn more about how power modules stack up to these discrete designs.

Comments

To join the conversation, and become an exclusive member of Electronic Design, create an account today!