Loading...
 

Zephyr project on STM32

   Zephyr Workbench, a VSCode extension to manage Zephyr on STM32.
It enables users to easily create, develop, and debug Zephyr applications.
Main features:
  • Install host dependencies.
  • Import toolchain and SDK.
  • Create, configure, build and manage apps.
  • Debug STM32.
You can directly download it from the VSCode marketplace
For more details, visit the Zephyr Workbench

System Workbench for STM32


Using C++ and C files. Header file compilation error

Hi All

I have a project using STM32F407 MCU. I have a main.cpp and several .cpp and .c files. When compiling, I am getting errors related to the header files:

For example:

In file included from C:/tmp/ACC/inc/Controller.h:11:0,
from C:/tmp/ACC/inc/main.h:11,
from ../src/simulatorcontrol.c:4:
C:/tmp/ACC_DE25/inc/AdcChannel.h:39:1: error: unknown type name ‘class’

This file AdcChannel.h has the following:

  1. ifndef ADC_CHANNEL
  2. define ADC_CHANNEL


  1. ifdef __cplusplus

extern “C” {

  1. endif


  1. include “AdcCommon.h”



class AdcChannel
{
private:

protected:
....
.....
};

  1. ifdef __cplusplus

}

  1. endif


  1. endif // ADC_CHANNEL



Any advice how to fix this?

France

Hi,

The problem is that your source file is named simulatorcontrol.c ; according to the C extension, this is a C source file, so you should not include (directly or indirectly) any C++ header file, while probably both Controller.h and AdcChannel.h are C++...

Either your source file is a C++ file, so it’s extension should be cpp, or, in main.h, you should only include Controler.h if compiling C++ code, that is protect it by an #ifdef __cplusplus

Hope this helps clarifying things,

Bernard (Ac6)