From 0d6224d432dee9781baadc8a833826e42fe7acda Mon Sep 17 00:00:00 2001 From: Paul Eggert Date: Tue, 18 Jun 2013 11:36:13 -0700 Subject: [PATCH] * conf_post.h: Add comments for INLINE, EXTERN_INLINE, etc. --- src/ChangeLog | 4 ++++ src/conf_post.h | 31 +++++++++++++++++++++++++++++++ 2 files changed, 35 insertions(+) diff --git a/src/ChangeLog b/src/ChangeLog index c432c1ad8bb..f8d4063b352 100644 --- a/src/ChangeLog +++ b/src/ChangeLog @@ -1,3 +1,7 @@ +2013-06-18 Paul Eggert + + * conf_post.h: Add comments for INLINE, EXTERN_INLINE, etc. + 2013-06-18 Kenichi Handa * font.c (Ffont_spec): Signal an error for an invalid font name diff --git a/src/conf_post.h b/src/conf_post.h index 5cb385d9029..46aea32ef30 100644 --- a/src/conf_post.h +++ b/src/conf_post.h @@ -207,6 +207,37 @@ extern void _DebPrint (const char *fmt, ...); #undef noinline #endif +/* Use Gnulib's extern-inline module for extern inline functions. + An include file foo.h should prepend FOO_INLINE to function + definitions, with the following overall pattern: + + [#include any other .h files first.] + ... + INLINE_HEADER_BEGIN + #ifndef FOO_INLINE + # define FOO_INLINE INLINE + #endif + ... + FOO_INLINE int + incr (int i) + { + return i + 1; + } + ... + INLINE_HEADER_END + + The corresponding foo.c file should do this: + + #define FOO_INLINE EXTERN_INLINE + + before including any .h file other than config.h. + Other .c files should not define FOO_INILNE. + + C99 compilers compile functions like 'incr' as C99-style extern + inline functions. Pre-C99 GCCs do something similar with + GNU-specific keywords. Pre-C99 non-GCC compilers use static + functions, which bloats the code but is good enough. */ + #define INLINE _GL_INLINE #define EXTERN_INLINE _GL_EXTERN_INLINE #define INLINE_HEADER_BEGIN _GL_INLINE_HEADER_BEGIN -- 2.39.2