Arene Base
Fundamental Utilities For Safety Critical C++
Loading...
Searching...
No Matches
maybe_unused.hpp
Go to the documentation of this file.
1// Copyright 2024, Toyota Motor Corporation
2//
3// SPDX-License-Identifier: Apache-2.0 WITH LLVM-exception
4
5#ifndef INCLUDE_GUARD_ARENE_BASE_ARENE_BASE_COMPILER_SUPPORT_ATTRIBUTES_MAYBE_UNUSED_HPP_
6#define INCLUDE_GUARD_ARENE_BASE_ARENE_BASE_COMPILER_SUPPORT_ATTRIBUTES_MAYBE_UNUSED_HPP_
7
8// IWYU pragma: private, include "arene/base/compiler_support/attributes.hpp"
9
10#include "arene/base/compiler_support/attributes/has_attribute.hpp"
11
12// NOLINTBEGIN(cppcoreguidelines-macro-usage) Explicitly providing compiler support macro functions
13// parasoft-begin-suppress AUTOSAR-A16_0_1-d-2 "Conditional defines permitted by A16-0-1 Permit #2"
14// parasoft-begin-suppress AUTOSAR-A16_0_1-a-2 "Conditional defines permitted by A16-0-1 Permit #2"
15
16/// @def ARENE_MAYBE_UNUSED
17/// @brief An alias for @c [[maybe_unused]] , or a no-op if the attribute is not supported
18// parasoft-begin-suppress AUTOSAR-M16_0_7-a-2 "False positive: gnu and unused not used as a macro"
19#if ARENE_HAS_STD_ATTRIBUTE(gnu::unused)
20#define ARENE_MAYBE_UNUSED [[gnu::unused]]
21#elif ARENE_HAS_STD_ATTRIBUTE(maybe_unused) >= 201603L
22#define ARENE_MAYBE_UNUSED [[maybe_unused]]
23#else
24#define ARENE_MAYBE_UNUSED
25#endif
26// parasoft-end-suppress AUTOSAR-M16_0_7-a-2
27
28// NOLINTEND(cppcoreguidelines-macro-usage) Explicitly providing compiler support macro functions
29// parasoft-end-suppress AUTOSAR-A16_0_1-d-2
30// parasoft-end-suppress AUTOSAR-A16_0_1-a-2
31
32#endif // INCLUDE_GUARD_ARENE_BASE_ARENE_BASE_COMPILER_SUPPORT_ATTRIBUTES_MAYBE_UNUSED_HPP_