Toggle navigation
Documentation
The friendly Operating System for the Internet of Things
Main Page
Related Pages
Supported Boards
Modules
Namespaces
Namespace List
Namespace Members
All
Functions
Variables
Enumerations
Data Structures
Data Structures
Class Hierarchy
Data Fields
All
_
a
b
c
d
e
f
g
h
i
j
k
l
m
n
o
p
q
r
s
t
u
v
w
x
y
z
~
Functions
a
b
c
d
e
f
g
h
i
j
l
m
n
o
p
r
s
t
u
w
~
Variables
_
a
b
c
d
e
f
g
h
i
j
k
l
m
n
o
p
q
r
s
t
u
v
w
x
y
z
Typedefs
Enumerator
Related Symbols
Files
File List
Globals
All
_
a
b
c
d
e
f
g
h
i
j
k
l
m
n
o
p
q
r
s
t
u
v
w
x
z
Functions
_
a
b
c
d
e
f
g
h
i
j
k
l
m
n
o
p
q
r
s
t
u
v
w
x
z
Variables
_
a
b
c
d
e
f
g
h
i
j
k
l
m
n
o
p
q
r
s
t
u
v
w
x
z
Typedefs
_
a
b
c
d
e
f
g
h
i
k
l
m
n
o
p
q
r
s
t
u
v
w
x
z
Enumerations
_
a
b
c
d
e
f
g
h
i
k
l
m
n
p
q
r
s
t
u
v
w
x
z
Enumerator
a
b
c
d
e
f
g
h
i
j
k
l
m
n
o
p
q
r
s
t
u
v
w
x
z
Macros
_
a
b
c
d
e
f
g
h
i
j
k
l
m
n
o
p
q
r
s
t
u
v
w
x
z
►
RIOT OS
•
All
Data Structures
Namespaces
Files
Functions
Variables
Typedefs
Enumerations
Enumerator
Friends
Macros
Modules
Pages
Loading...
Searching...
No Matches
modules.h
Go to the documentation of this file.
1
/*
2
* Copyright (C) 2014 Freie Universität Berlin
3
* 2017 HAW-Hamburg
4
*
5
* This file is subject to the terms and conditions of the GNU Lesser
6
* General Public License v2.1. See the file LICENSE in the top level
7
* directory for more details.
8
*/
9
10
#pragma once
11
23
#ifdef __cplusplus
24
extern
"C"
{
25
#endif
26
59
#define IS_ACTIVE(macro) __is_active(macro)
60
70
#define IS_USED(module) IS_ACTIVE(module)
71
75
/* Here a prefix "__PREFIX_WHEN_" is added to the macro. So if it was a 1 we
76
* have "__PREFIX_WHEN_1", and if it was not defined we have "__PREFIX_WHEN_".
77
*/
78
#define __is_active(val) ___is_active(__PREFIX_WHEN_##val)
79
80
/* With this placeholder we turn the original value into two arguments when the
81
* original value was defined as 1 (note the comma).
82
*/
83
#define __PREFIX_WHEN_1 0,
84
85
/* Here we add two extra arguments, that way the next macro can accept varargs.
86
*
87
* If the original macro was defined as 1, this will have three arguments
88
* (__take_second_arg(0, 1, 0, 0)), otherwise it will have two
89
* (__take_second_arg(__PREFIX_WHEN_ 1, 0, 0)). The third zero is there just to
90
* be compliant with C99, which states that when a function-like macro ends
91
* with ellipsis (...) it should be called with at least one argument for the
92
* variable list.
93
*/
94
#define ___is_active(arg1_or_junk) __take_second_arg(arg1_or_junk 1, 0, 0)
95
96
/* Finally, we just always take the second argument, which will be either 1
97
* (when three arguments are passed, i.e. macro was defined as 1) or 0 (when
98
* only two arguments are passed).
99
*/
100
#define __take_second_arg(__ignored, val, ...) val
105
#ifdef __cplusplus
106
}
107
#endif
108
Generated on Thu Apr 17 2025 22:37:25 by
1.12.0