mirror of
https://https.git.savannah.gnu.org/git/gnulib.git
synced 2026-06-15 15:25:49 +00:00
35 lines
1.4 KiB
Plaintext
35 lines
1.4 KiB
Plaintext
@c Documentation of gnulib module 'inline'.
|
|
|
|
@c Copyright (C) 2019--2026 Free Software Foundation, Inc.
|
|
|
|
@c Permission is granted to copy, distribute and/or modify this document
|
|
@c under the terms of the GNU Free Documentation License, Version 1.3 or
|
|
@c any later version published by the Free Software Foundation; with no
|
|
@c Invariant Sections, no Front-Cover Texts, and no Back-Cover Texts. A
|
|
@c copy of the license is at <https://www.gnu.org/licenses/fdl-1.3.en.html>.
|
|
|
|
@node static inline
|
|
@section Static inline functions
|
|
|
|
@cindex static inline
|
|
@cindex inline
|
|
|
|
In order to mark functions as @code{static inline} in @code{.c} files,
|
|
the only prerequisite you need is an @code{AC_REQUIRE([AC_C_INLINE])}.
|
|
No Gnulib module is needed.
|
|
|
|
@mindex inline
|
|
When marking functions as @code{static inline} in @code{.h} files,
|
|
on the other hand,
|
|
it is useful to avoid the following problem:
|
|
When gcc or clang is not optimizing, it generates the same object code
|
|
for every @code{static inline} function
|
|
that is actually used in the current compilation unit,
|
|
thus bloating the size of the resulting binary.
|
|
(Code of @code{static inline} functions
|
|
that are unused in the current compilation unit gets dropped;
|
|
that is not an issue.)
|
|
To avoid this problem, use the Gnulib module @samp{inline}
|
|
and make the @code{static inline} function definition conditional
|
|
on the value of the C macro @code{HAVE_INLINE}.
|