Skip to main content
Associate II
December 28, 2024
Question

STM32CubeIde and Error according extern"C"

  • December 28, 2024
  • 3 replies
  • 882 views

I changed an example program for STM32F4 Discovery Board to C++ project.

When compiling the project, there are files included from BSP, which includes a definition:

extern "C".

When compiling the project, the first error is the following:

../../Drivers/BSP/STM32F4-Discovery/stm32f4_discovery.h:25:9: error: expected unqualified-id before string constant

25 | extern "C" {

| ^~~

what is the problem?

Thanks for responsing

3 replies

Tesla DeLorean
Guru
December 29, 2024

Any effort to prevent repeated inclusion of the same include file?

Closing brace matching?

Tips, Buy me a coffee, or three.. PayPal VenmoUp vote any posts that you find helpful, it shows what's working..
stefluikAuthor
Associate II
December 30, 2024

thanks for the reply.

I cannot see these issues as the problem.

There is only one include and the HAL files are from ST not manipulated.

Stefan

stefluikAuthor
Associate II
December 30, 2024

I think I found the more source of problem:

The code is a .c (C) file and it is compiled with gcc, not g++.

The project is set to C++.

All the HAL files are of course C-files.

But the code is compiled with the #define __cplusplus.

So of course the error pops up.

What is the correct solution?

I think one is to say, all .c files will be compiled with c++ compiler.

Is this correct direction?

Pavel A.
Super User
December 30, 2024

Is this correct direction?

Short answer: no. 

Conversion of CubeIDE projects to C++ had been discussed here many times, please search. Rather won't start with that again.

stefluikAuthor
Associate II
January 12, 2025

Thanks for your reply.

Of course I tried searching. However, searching for C++ is not that easy.
I didn't find anything suitable.


I am very sad that you closed the post like this and no one replied to it or the solution is obviously in another post.


Apparently you are more intelligent than me and are hiding the solution to me and others by simply explaining it here.