1
0
Fork 0
mirror of https://github.com/git/git.git synced 2024-10-28 12:59:41 +01:00

Merge branch 'jc/maybe-unused'

Developer doc updates.

* jc/maybe-unused:
  CodingGuidelines: also mention MAYBE_UNUSED
This commit is contained in:
Junio C Hamano 2024-09-06 10:38:50 -07:00
commit 4476304a06
2 changed files with 27 additions and 2 deletions

View file

@ -262,8 +262,9 @@ For C programs:
like "error: unused parameter 'foo' [-Werror=unused-parameter]",
which indicates that a function ignores its argument. If the unused
parameter can't be removed (e.g., because the function is used as a
callback and has to match a certain interface), you can annotate the
individual parameters with the UNUSED keyword, like "int foo UNUSED".
callback and has to match a certain interface), you can annotate
the individual parameters with the UNUSED (or MAYBE_UNUSED)
keyword, like "int foo UNUSED".
- We try to support a wide range of C compilers to compile Git with,
including old ones. As of Git v2.35.0 Git requires C99 (we check

View file

@ -195,6 +195,19 @@ struct strbuf;
#define _NETBSD_SOURCE 1
#define _SGI_SOURCE 1
/*
* UNUSED marks a function parameter that is always unused. It also
* can be used to annotate a function, a variable, or a type that is
* always unused.
*
* A callback interface may dictate that a function accepts a
* parameter at that position, but the implementation of the function
* may not need to use the parameter. In such a case, mark the parameter
* with UNUSED.
*
* When a parameter may be used or unused, depending on conditional
* compilation, consider using MAYBE_UNUSED instead.
*/
#if GIT_GNUC_PREREQ(4, 5)
#define UNUSED __attribute__((unused)) \
__attribute__((deprecated ("parameter declared as UNUSED")))
@ -649,6 +662,17 @@ static inline int git_has_dir_sep(const char *path)
#define RESULT_MUST_BE_USED
#endif
/*
* MAYBE_UNUSED marks a function parameter that may be unused, but
* whose use is not an error. It also can be used to annotate a
* function, a variable, or a type that may be unused.
*
* Depending on a configuration, all uses of such a thing may become
* #ifdef'ed away. Marking it with UNUSED would give a warning in a
* compilation where it is indeed used, and not marking it at all
* would give a warning in a compilation where it is unused. In such
* a case, MAYBE_UNUSED is the appropriate annotation to use.
*/
#define MAYBE_UNUSED __attribute__((__unused__))
#include "compat/bswap.h"