Download M4 Source Macro History Category Index

ax_c99_inline

Synopsis

AX_C99_INLINE

Description

This macro defines HAVE_C99_INLINE if the C compiler supports "inline" and "extern inline" correctly. An application may replace "inline" with "static inline" as a workaround for older compilers.

Author

Michael McMaster <email@michaelmcmaster.name>

Last Modified

2009-04-10

M4 Source Code

AC_DEFUN([AX_C99_INLINE], [
        AC_MSG_CHECKING([whether the compiler supports C99 inline functions])
        AC_REQUIRE([AC_PROG_CC_C99])

        AC_LANG_PUSH([C])

        dnl In a conforming C99 implementation a function marked "inline" will not
        dnl     be compiled into the translation unit if the compiler was not able to
        dnl     inline the function.
        dnl     GCC versions before 4.3 would output the inline functions into all
        dnl     translation units that could require the definition.
        AC_LINK_IFELSE(
                AC_LANG_SOURCE([
                        inline void* foo() { foo(); return &foo; }
                        int main() { return foo() != 0;}
                        ]),

                dnl the invalid source compiled, so the inline keyword does not work
                dnl correctly.
                AC_MSG_RESULT([no]),

                dnl Secondary test of valid source.
                AC_LINK_IFELSE(
                        AC_LANG_SOURCE([
                                extern inline void* foo() { foo(); return &foo; }
                                int main() { return foo() != 0;}
                                ]),

                        AC_MSG_RESULT([yes])
                        AC_DEFINE([HAVE_C99_INLINE], [1],
                                [Define to 1 if the "extern" keyword controls whether an inline function appears in a translation unit.]),

                        dnl Perhaps inline functions aren't supported at all ?
                        AC_MSG_RESULT([no])
                        )
                )

        AC_LANG_POP([C])
        ]);

License

Copyright © 2009 Michael McMaster <email@michaelmcmaster.name>

Copying and distribution of this file, with or without modification, are permitted in any medium without royalty provided the copyright notice and this notice are preserved.