summaryrefslogtreecommitdiff
path: root/src
diff options
context:
space:
mode:
authorPaul Eggert <eggert@cs.ucla.edu>2013-06-18 11:36:13 -0700
committerPaul Eggert <eggert@cs.ucla.edu>2013-06-18 11:36:13 -0700
commit0d6224d432dee9781baadc8a833826e42fe7acda (patch)
tree348d5dfbde7808972c1e0002e0d46270de7144da /src
parent4ba54f7d9d2c39a245ba6f527a956cd775133e86 (diff)
downloademacs-0d6224d432dee9781baadc8a833826e42fe7acda.tar.gz
* conf_post.h: Add comments for INLINE, EXTERN_INLINE, etc.
Diffstat (limited to 'src')
-rw-r--r--src/ChangeLog4
-rw-r--r--src/conf_post.h31
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