cancel
Showing results for 
Search instead for 
Did you mean: 

C++ support of stm32cubeide does not work.

yujin
Associate II

in default situation, you could not call c++ function in C file. 

So the main.c  is not suitable file in C++ project.

 

if user choose C++ project,the generated main.c ,stm32h7xx_it.c should sufixed with .cpp.

3 REPLIES 3
Ghofrane GSOURI
ST Employee

@yujin wrote:

in default situation, you could not call c++ function in C file. 


Did you provide the appropriate extern "C" declaration?

https://stackoverflow.com/questions/1041866/what-is-the-effect-of-extern-c-in-c

 

 

main.c:

 

extern "C" void c_function_in_cpp_file();

int main(void)
{
    c_function_in_cpp_file();
    while(1)
    {
    }
}

 

cpp_file.cpp:

 

void cpp_function_in_cpp_file()
{

}


extern "C" void c_function_in_cpp_file()
{
   cpp_function_in_cpp_file();
   //function can be linked to C code, but can execute C++ code
}

 

You make a header file compatible with both C and C++ by using:

cpp_file.h:

 

#ifdef __cplusplus
//c++ class definitions etc. invisible to C files including this header
#endif

#ifdef __cplusplus
extern "C" {
#endif

//functions that can be called by both C and C++

#ifdef __cplusplus
}
#endif

 

Kudo posts if you have the same problem and kudo replies if the solution works.
Click "Accept as Solution" if a reply solved your problem. If no solution was posted please answer with your own.