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++?
you probably need to instruct the compiler to switch to C++ mode by the compiler option
--cpp
but, this is indeed the default for .cpp file. did you mix things up?
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++.