xref: /llvm-project/clang-tools-extra/docs/clang-tidy/checks/modernize/use-nullptr.rst (revision 803cbcbc4029fc65188f6c1083a230341279b2d2)
1.. title:: clang-tidy - modernize-use-nullptr
2
3modernize-use-nullptr
4=====================
5
6The check converts the usage of null pointer constants (e.g. ``NULL``, ``0``)
7to use the new C++11 and C23 ``nullptr`` keyword.
8
9Example
10-------
11
12.. code-block:: c++
13
14  void assignment() {
15    char *a = NULL;
16    char *b = 0;
17    char c = 0;
18  }
19
20  int *ret_ptr() {
21    return 0;
22  }
23
24
25transforms to:
26
27.. code-block:: c++
28
29  void assignment() {
30    char *a = nullptr;
31    char *b = nullptr;
32    char c = 0;
33  }
34
35  int *ret_ptr() {
36    return nullptr;
37  }
38
39Options
40-------
41
42.. option:: IgnoredTypes
43
44  Semicolon-separated list of regular expressions to match pointer types for
45  which implicit casts will be ignored. Default value:
46  `std::_CmpUnspecifiedParam::;^std::__cmp_cat::__unspec`.
47
48.. option:: NullMacros
49
50   Comma-separated list of macro names that will be transformed along with
51   ``NULL``. By default this check will only replace the ``NULL`` macro and will
52   skip any similar user-defined macros.
53
54Example
55^^^^^^^
56
57.. code-block:: c++
58
59  #define MY_NULL (void*)0
60  void assignment() {
61    void *p = MY_NULL;
62  }
63
64transforms to:
65
66.. code-block:: c++
67
68  #define MY_NULL NULL
69  void assignment() {
70    int *p = nullptr;
71  }
72
73if the :option:`NullMacros` option is set to ``MY_NULL``.
74