Go to the documentation of this file.
28#ifndef __VSF_ESPIDF_ESP_COMPILER_H__
29#define __VSF_ESPIDF_ESP_COMPILER_H__
34#ifndef __IS_COMPILER_LLVM__
35# if defined(__clang__)
36# define __IS_COMPILER_LLVM__ 1
39#ifndef __IS_COMPILER_GCC__
40# if defined(__GNUC__) && !defined(__clang__)
41# define __IS_COMPILER_GCC__ 1
48#if __IS_COMPILER_GCC__ || __IS_COMPILER_LLVM__
50# define likely(x) __builtin_expect(!!(x), 1)
53# define unlikely(x) __builtin_expect(!!(x), 0)
60# define unlikely(x) (x)
67#if defined(__cplusplus) && (__cplusplus >= 202002L)
68# define ESP_COMPILER_DESIGNATED_INIT_AGGREGATE_TYPE_STR(member, value) .member = value,
69# define ESP_COMPILER_DESIGNATED_INIT_AGGREGATE_TYPE_EMPTY(member) .member = { },
70#elif defined(__cplusplus) && (__cplusplus < 202002L)
71# define ESP_COMPILER_DESIGNATED_INIT_AGGREGATE_TYPE_STR(member, value) { .member = value },
72# define ESP_COMPILER_DESIGNATED_INIT_AGGREGATE_TYPE_EMPTY(member) .member = { },
74# define ESP_COMPILER_DESIGNATED_INIT_AGGREGATE_TYPE_STR(member, value) .member = value,
75# define ESP_COMPILER_DESIGNATED_INIT_AGGREGATE_TYPE_EMPTY(member)
81#define __ESP_COMPILER_PRAGMA__(string) _Pragma(#string)
82#define _ESP_COMPILER_PRAGMA_(string) __ESP_COMPILER_PRAGMA__(string)
84#if __IS_COMPILER_LLVM__
85# define ESP_COMPILER_DIAGNOSTIC_PUSH_IGNORE(warning) \
86 __ESP_COMPILER_PRAGMA__(clang diagnostic push) \
87 __ESP_COMPILER_PRAGMA__(clang diagnostic ignored "-Wunknown-warning-option") \
88 __ESP_COMPILER_PRAGMA__(clang diagnostic ignored warning)
89# define ESP_COMPILER_DIAGNOSTIC_POP(warning) \
90 __ESP_COMPILER_PRAGMA__(clang diagnostic pop)
91#elif __IS_COMPILER_GCC__
92# define ESP_COMPILER_DIAGNOSTIC_PUSH_IGNORE(warning) \
93 __ESP_COMPILER_PRAGMA__(GCC diagnostic push) \
94 __ESP_COMPILER_PRAGMA__(GCC diagnostic ignored "-Wpragmas") \
95 __ESP_COMPILER_PRAGMA__(GCC diagnostic ignored warning)
96# define ESP_COMPILER_DIAGNOSTIC_POP(warning) \
97 __ESP_COMPILER_PRAGMA__(GCC diagnostic pop)
99# define ESP_COMPILER_DIAGNOSTIC_PUSH_IGNORE(warning)
100# define ESP_COMPILER_DIAGNOSTIC_POP(warning)
106#if defined(__clang_analyzer__)
107# define ESP_STATIC_ANALYZER_CHECK(_expr_, _ret_) \
108 do { if ((_expr_)) { return (_ret_); } } while(0)
110# define ESP_STATIC_ANALYZER_CHECK(_expr_, _ret_)