@@ -300,6 +300,13 @@ static __INLINE void __set_FPSCR(uint32_t fpscr)
300300#elif  defined ( __GNUC__ ) /* ------------------ GNU Compiler ---------------------*/ 
301301/*  GNU gcc specific functions */ 
302302
303+ /*  C++17 removes register keyword */ 
304+ #if  __cplusplus >= 201703L
305+ # define  DEPRECATED_REGISTER 
306+ #else 
307+ # define  DEPRECATED_REGISTER  register 
308+ #endif 
309+ 
303310/* * \brief  Enable IRQ Interrupts
304311
305312  This function enables IRQ interrupts by clearing the I-bit in the CPSR. 
@@ -402,7 +409,7 @@ __attribute__( ( always_inline ) ) static __INLINE uint32_t __get_xPSR(void)
402409 */  
403410__attribute__ ( ( always_inline ) ) static __INLINE uint32_t __get_PSP(void )
404411{
405-   register  uint32_t  result ;
412+   DEPRECATED_REGISTER  uint32_t  result;
406413
407414  __ASM volatile  (" MRS %0, psp\n "    : " =r"   (result) );
408415  return (result);
@@ -429,7 +436,7 @@ __attribute__( ( always_inline ) ) static __INLINE void __set_PSP(uint32_t topOf
429436 */  
430437__attribute__ ( ( always_inline ) ) static __INLINE uint32_t __get_MSP(void )
431438{
432-   register  uint32_t  result ;
439+   DEPRECATED_REGISTER  uint32_t  result;
433440
434441  __ASM volatile  (" MRS %0, msp\n "   : " =r"   (result) );
435442  return (result);
@@ -591,6 +598,8 @@ __attribute__( ( always_inline ) ) static __INLINE void __set_FPSCR(uint32_t fps
591598
592599#endif  /*  (__CORTEX_M == 0x04) */ 
593600
601+ #undef  DEPRECATED_REGISTER
602+ 
594603
595604#elif  defined ( __TASKING__ ) /* ------------------ TASKING Compiler --------------*/ 
596605/*  TASKING carm specific functions */ 
0 commit comments