提交 e9e03a77 编写于 作者: T Thomas Rast 提交者: Junio C Hamano

commit-slab: declare functions "static inline"

This shuts up compiler warnings about unused functions.  No such
warnings are currently triggered, but if someone were to actually
use init_NAME_with_stride() as documented, they would get a warning
about init_NAME() being unused.

While there, write a comment about why the last real declaration of
the variable is without a terminating semicolon, while another
forward declarations have one.
Signed-off-by: NThomas Rast <tr@thomasrast.ch>
Helped-by: NJonathan Nieder <jrnieder@gmail.com>
Signed-off-by: NJunio C Hamano <gitster@pobox.com>
上级 dcbbc8fa
...@@ -40,6 +40,8 @@ ...@@ -40,6 +40,8 @@
#define COMMIT_SLAB_SIZE (512*1024-32) #define COMMIT_SLAB_SIZE (512*1024-32)
#endif #endif
#define MAYBE_UNUSED __attribute__((__unused__))
#define define_commit_slab(slabname, elemtype) \ #define define_commit_slab(slabname, elemtype) \
\ \
struct slabname { \ struct slabname { \
...@@ -50,7 +52,7 @@ struct slabname { \ ...@@ -50,7 +52,7 @@ struct slabname { \
}; \ }; \
static int stat_ ##slabname## realloc; \ static int stat_ ##slabname## realloc; \
\ \
static void init_ ##slabname## _with_stride(struct slabname *s, \ static MAYBE_UNUSED void init_ ##slabname## _with_stride(struct slabname *s, \
unsigned stride) \ unsigned stride) \
{ \ { \
unsigned int elem_size; \ unsigned int elem_size; \
...@@ -63,12 +65,12 @@ static void init_ ##slabname## _with_stride(struct slabname *s, \ ...@@ -63,12 +65,12 @@ static void init_ ##slabname## _with_stride(struct slabname *s, \
s->slab = NULL; \ s->slab = NULL; \
} \ } \
\ \
static void init_ ##slabname(struct slabname *s) \ static MAYBE_UNUSED void init_ ##slabname(struct slabname *s) \
{ \ { \
init_ ##slabname## _with_stride(s, 1); \ init_ ##slabname## _with_stride(s, 1); \
} \ } \
\ \
static void clear_ ##slabname(struct slabname *s) \ static MAYBE_UNUSED void clear_ ##slabname(struct slabname *s) \
{ \ { \
int i; \ int i; \
for (i = 0; i < s->slab_count; i++) \ for (i = 0; i < s->slab_count; i++) \
...@@ -78,7 +80,7 @@ static void clear_ ##slabname(struct slabname *s) \ ...@@ -78,7 +80,7 @@ static void clear_ ##slabname(struct slabname *s) \
s->slab = NULL; \ s->slab = NULL; \
} \ } \
\ \
static elemtype *slabname## _at(struct slabname *s, \ static MAYBE_UNUSED elemtype *slabname## _at(struct slabname *s, \
const struct commit *c) \ const struct commit *c) \
{ \ { \
int nth_slab, nth_slot; \ int nth_slab, nth_slot; \
...@@ -103,4 +105,16 @@ static elemtype *slabname## _at(struct slabname *s, \ ...@@ -103,4 +105,16 @@ static elemtype *slabname## _at(struct slabname *s, \
\ \
static int stat_ ##slabname## realloc static int stat_ ##slabname## realloc
/*
* Note that this seemingly redundant second declaration is required
* to allow a terminating semicolon, which makes instantiations look
* like function declarations. I.e., the expansion of
*
* define_commit_slab(indegree, int);
*
* ends in 'static int stat_indegreerealloc;'. This would otherwise
* be a syntax error according (at least) to ISO C. It's hard to
* catch because GCC silently parses it by default.
*/
#endif /* COMMIT_SLAB_H */ #endif /* COMMIT_SLAB_H */
Markdown is supported
0% .
You are about to add 0 people to the discussion. Proceed with caution.
先完成此消息的编辑!
想要评论请 注册