diff options
| author | Paul Eggert <eggert@cs.ucla.edu> | 2013-06-18 11:36:13 -0700 |
|---|---|---|
| committer | Paul Eggert <eggert@cs.ucla.edu> | 2013-06-18 11:36:13 -0700 |
| commit | 0d6224d432dee9781baadc8a833826e42fe7acda (patch) | |
| tree | 348d5dfbde7808972c1e0002e0d46270de7144da /src | |
| parent | 4ba54f7d9d2c39a245ba6f527a956cd775133e86 (diff) | |
| download | emacs-0d6224d432dee9781baadc8a833826e42fe7acda.tar.gz | |
* conf_post.h: Add comments for INLINE, EXTERN_INLINE, etc.
Diffstat (limited to 'src')
| -rw-r--r-- | src/ChangeLog | 4 | ||||
| -rw-r--r-- | src/conf_post.h | 31 |
2 files changed, 35 insertions, 0 deletions
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 <eggert@cs.ucla.edu> + + * conf_post.h: Add comments for INLINE, EXTERN_INLINE, etc. + 2013-06-18 Kenichi Handa <handa@gnu.org> * 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 |
