Ævar Arnfjörð Bjarmason wrote: > As an aside, I'd appreciate a document pointer, what are the > implications here exactly? Oh, good point! I clean forgot to provide that. "static inline" functions are just like macros, except each argument is evaluated exactly once and the arguments are typechecked. In the older dialect, what I was suggesting would be written as follows: #ifdef NO_GETTEXT #define git_setup_gettext() do { } while(0) #else extern void git_setup_gettext(void); #endif The feature has been part of GCC and various compilers for a long time now. It was finally officially adopted when the C99 standard came out. It "degrades gracefully" in that the Makefile will define inline to nothing on those very old compilers known not to support it, making these into static functions (which is kind of ugly but with most optimizers it tends to produce the same result). GCC documentation: http://gcc.gnu.org/onlinedocs/gcc/Inline.html C99 documentation (see the "most current draft" of the revised C99 and navigate with PDF bookmarks to Language → Declarations → Function specifiers → Semantics): http://www.open-std.org/jtc1/sc22/wg14/www/projects#9899 More important than all that is how the construct gets used and why. For this, see SECTION 2 item 2 ("Ifdefs are ugly") of linux-2.6/Documentation/SubmittingPatches[1]: and take a look at some of the surrounding code (maybe include/linux/kernel.h would be analogous) for examples. Hope that helps, Jonathan [1] http://git.kernel.org/?p=linux/kernel/git/torvalds/linux-2.6.git;a=blob;f=Documentation/SubmittingPatches -- To unsubscribe from this list: send the line "unsubscribe git" in the body of a message to majordomo@xxxxxxxxxxxxxxx More majordomo info at http://vger.kernel.org/majordomo-info.html