We are running a survey to help us improve the experience for all of our members. If you see the survey appear, please take the time to tell us about your experience if you can.
I put a simple class in a file named "test.h". The class is as follows:
class a { public: int b; };
I am using the Keil MCBSTM32 board (STM32F103RB processor).
I place this file in "C:\Keil\ARM\Boards\Keil\MCBSTM32\Timer". I then open the timer project.
If I include the file in timer.c I get the following error:
Build target 'MCBSTM32' compiling Timer.c... test.h(2): error: #20: identifier "class" is undefined test.h(2): error: #65: expected a ";" Target not created
Why does it give me an error? I thought the compiler ssuported C++?
He isn't using a *.cpp file. The source file in question is *.c, which defaults to compiling as C.
Most compilers make initial decision of C or C++ based on extension.
If you use the gcc front-end you will get the same result. If you use the g++ front-end, then your front-end choice specifies C++ compilation.
It is important to note that not all compilers even have a switch to override selected language. Several compilers only allows the file extension to select between C and C++ so it is always best to use the "normal" extensions when programming in C or C++.