xref: /llvm-project/clang-tools-extra/docs/clang-tidy/checks/readability/redundant-preprocessor.rst (revision 6e566bc5523f743bc34a7e26f050f1f2b4d699a8)
1.. title:: clang-tidy - readability-redundant-preprocessor
2
3readability-redundant-preprocessor
4==================================
5
6Finds potentially redundant preprocessor directives. At the moment the
7following cases are detected:
8
9* `#ifdef` .. `#endif` pairs which are nested inside an outer pair with the
10  same condition. For example:
11
12.. code-block:: c++
13
14  #ifdef FOO
15  #ifdef FOO // inner ifdef is considered redundant
16  void f();
17  #endif
18  #endif
19
20* Same for `#ifndef` .. `#endif` pairs. For example:
21
22.. code-block:: c++
23
24  #ifndef FOO
25  #ifndef FOO // inner ifndef is considered redundant
26  void f();
27  #endif
28  #endif
29
30* `#ifndef` inside an `#ifdef` with the same condition:
31
32.. code-block:: c++
33
34  #ifdef FOO
35  #ifndef FOO // inner ifndef is considered redundant
36  void f();
37  #endif
38  #endif
39
40* `#ifdef` inside an `#ifndef` with the same condition:
41
42.. code-block:: c++
43
44  #ifndef FOO
45  #ifdef FOO // inner ifdef is considered redundant
46  void f();
47  #endif
48  #endif
49
50* `#if` .. `#endif` pairs which are nested inside an outer pair with the same
51  condition. For example:
52
53.. code-block:: c++
54
55  #define FOO 4
56  #if FOO == 4
57  #if FOO == 4 // inner if is considered redundant
58  void f();
59  #endif
60  #endif
61
62