AnsweredAssumed Answered

STM Cube C++ Error

Question asked by Dheeraj on Jan 30, 2015
Latest reply on Feb 3, 2015 by kumar.dheeraj.001
Hi, 
    I've been trying to use the new F4 HAL libraries for a project on the STM32F427II

I realize that this will involve a lot of C to C++ integration.

My first issue is with the two enum typedefs in 
  @file    stm32f4xx_hal_def.h

typedef enum 
{
  HAL_OK       = 0x00,
  HAL_ERROR    = 0x01,
  HAL_BUSY     = 0x02,
  HAL_TIMEOUT  = 0x03
} HAL_StatusTypeDef;
#endif
/** 
  * @brief  HAL Lock structures definition  
  */
typedef enum 
{
  HAL_UNLOCKED = 0x00,
  HAL_LOCKED   = 0x01  
} HAL_LockTypeDef;

These are picked up correctly in an eclipse GCC C project but not in a C++ project.

The message is 'HAL_LockTypeDef 'does not name a type. There are about 500 such messages.

Any ideas as to how to go about either getting the C typedef to be in scope of C++, or of creating something like

#ifdef __cplusplus
  //enum  HAL_StatusTypeDef { HAL_OK, HAL_ERROR, HAL_BUSY, HAL_TIMEOUT } ;
 enum  class HAL_StatusTypeDef { HAL_OK, HAL_ERROR, HAL_BUSY, HAL_TIMEOUT } ;
 // typedef enum   { HAL_OK, HAL_ERROR, HAL_BUSY, HAL_TIMEOUT } HAL_StatusTypeDef;


#else
typedef enum 
{
  HAL_OK       = 0x00,
  HAL_ERROR    = 0x01,
  HAL_BUSY     = 0x02,
  HAL_TIMEOUT  = 0x03
} HAL_StatusTypeDef;
#endif

I am not sure how to get rid of this error. I know STMCube has support of C++ but i am unable to use. Any pointer would really be appreciated.

Outcomes