Skip to content

Commit

Permalink
mbed_toolchain: Use C++11/C11 attributes
Browse files Browse the repository at this point in the history
Newer language standards have standard forms for `MBED_NORETURN` and
`MBED_ALIGN` attributes. Use them when available.

C++14 also adds `[[deprecated]]`, but as it needs to go in the middle of
structure definitions as `class [[deprecated]] MyClass`, it's not a
total drop-in-replacemend for `MBED_DEPRECATED`, so that is not
attempted here.

Using standard forms increases the chances that code analysis tools such
Coverity will recognise them - particularly important for "no return".
  • Loading branch information
kjbracey committed Jun 14, 2019
1 parent 8f89a30 commit 42812c5
Showing 1 changed file with 10 additions and 2 deletions.
12 changes: 10 additions & 2 deletions platform/mbed_toolchain.h
Original file line number Diff line number Diff line change
Expand Up @@ -72,7 +72,11 @@
* @endcode
*/
#ifndef MBED_ALIGN
#if defined(__ICCARM__)
#if __cplusplus >= 201103 && !defined __CC_ARM
#define MBED_ALIGN(N) alignas(N)
#elif __STDC_VERSION__ >= 201112 && !defined __CC_ARM
#define MBED_ALIGN(N) _Alignas(N)
#elif defined(__ICCARM__)
#define MBED_ALIGN(N) _Pragma(MBED_STRINGIFY(data_alignment=N))
#else
#define MBED_ALIGN(N) __attribute__((aligned(N)))
Expand Down Expand Up @@ -298,7 +302,11 @@
* @endcode
*/
#ifndef MBED_NORETURN
#if defined(__GNUC__) || defined(__clang__) || defined(__CC_ARM)
#if __cplusplus >= 201103
#define MBED_NORETURN [[noreturn]]
#elif __STDC_VERSION__ >= 201112
#define MBED_NORETURN _Noreturn
#elif defined(__GNUC__) || defined(__clang__) || defined(__CC_ARM)
#define MBED_NORETURN __attribute__((noreturn))
#elif defined(__ICCARM__)
#define MBED_NORETURN __noreturn
Expand Down

0 comments on commit 42812c5

Please sign in to comment.