Important changes to forums and questions
All forums and questions are now archived. To start a new conversation or read the latest updates go to forums.mbed.com.
5 years, 1 month ago.
RawSerial.h class error
Hello I'm new with mbed os,
I'm trying to compile an existing project from Eclipse but I have the following error;
Console: RawSerial.h:56:35: error: expected class-name before ',' token
Rawserial.h include
#ifndef MBED_RAW_SERIAL_H #define MBED_RAW_SERIAL_H #define MBED_CONF_PLATFORM_DEFAULT_SERIAL_BAUD_RATE 9600 {{/media/uploads/alexkid/include.png}} #include "platform/platform.h" //#if DEVICE_SERIAL || defined(DOXYGEN_ONLY) #include "mbed_toolchain.h" #include "drivers/SerialBase.h" #include "hal/serial_api.h" #include "platform/NonCopyable.h"
Raw serial class declaring
class RawSerial: public SerialBase, private NonCopyable<RawSerial> { public: int putc(int c); int getc(); int puts(const char *str); int printf(const char *format, ...) MBED_PRINTF_METHOD(1, 2); } // namespace mbed
It look like a redefinition error. I try to comment previous definitions one by one, but the error is still there. I can't understand the source of the error.
Edit 22-10-2019 :
Thank you for your help.
Regards Alexandre
1 Answer
5 years, 1 month ago.
Hello Alexandre,
It seems the SerialBase
class name is not recognized by the compiler. Make sure the path to the SerialBase.h
header file has been added to the INCLUDE_PATHS
variable. The same applies also to the NonCopyable.h
header file path.
Edit: Check the INCLUDE_PATHS
variable in the project's Makefile
. Could find lines like:
Makefile
... INCLUDE_PATHS += -I../mbed/drivers ... INCLUDE_PATHS += -I../mbed/platform ...
Hello Zoltan, thank you for your response. I check the includes dependencies with "Eclipse include browser tool" and it looks like that SerialBase.h and NonCopyable.h are found (see print screen in the first post). But I noticed the code in serial base was inactive because of the directive: #if DEVICE_SERIAL || defined(DOXYGEN_ONLY).
So it’s like the serialbase.h was absent. So I add #define DEVICE_SERIAL 1 inside serialbase.h and I have no more class error.
It lead me to new question. How to know which mbed-os includes delclarations are necessaries?
Thanks you for your help.
Regards Alexandre
posted by 22 Oct 2019