
Microsoft Visual C++ is the power tool of Windows programming. Whether we're developing a low level driver, a DLL API or a complete application. Visual C++ gives us ultimate control and flexibility.
This extra flexibility and control requires an extra level of discipline to ensure that it does not result in less maintainable code, or buggier code. Of course, as embedded programmers we have well established methods to help us tackle these problems.
Visual C++ is the most flexible of all the current Microsoft programming languages allowing development targeting several different frameworks. This flexibility comes with advantages and disadvantages.
Visual C++ Applications tend to be more efficient than C# and Visual Basic in terms of performance. Another advantage to using Visual C++ is that most APIs for 3rd party hardware or software tend to target Visual C++. Although when .Net Class Libraries are not available (for C# or Visual Basic) it is possible to use P/Invoke to access the APIs it is usually quicker and easier to use Visual C++. One of the great features of Visual C++ is that it's possible to write a Visual C++ .Net backend that interfaces to APIs and contains all the time critical code and link that to a C# or Visual Basic front end, allowing us as developers to make the most of the advantages of both systems.