File: Inline-functions.html

package info (click to toggle)
gsl-ref-html 2.3-1
  • links: PTS
  • area: non-free
  • in suites: bullseye, buster, sid
  • size: 6,876 kB
  • ctags: 4,574
  • sloc: makefile: 35
file content (115 lines) | stat: -rw-r--r-- 5,431 bytes parent folder | download
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
<html>
<!-- Copyright (C) 1996, 1997, 1998, 1999, 2000, 2001, 2002, 2003, 2004, 2005, 2006, 2007, 2008, 2009, 2010, 2011, 2012, 2013, 2014, 2015, 2016 The GSL Team.

Permission is granted to copy, distribute and/or modify this document
under the terms of the GNU Free Documentation License, Version 1.3 or
any later version published by the Free Software Foundation; with the
Invariant Sections being "GNU General Public License" and "Free Software
Needs Free Documentation", the Front-Cover text being "A GNU Manual",
and with the Back-Cover Text being (a) (see below). A copy of the
license is included in the section entitled "GNU Free Documentation
License".

(a) The Back-Cover Text is: "You have the freedom to copy and modify this
GNU Manual." -->
<!-- Created by GNU Texinfo 5.1, http://www.gnu.org/software/texinfo/ -->
<head>
<title>GNU Scientific Library &ndash; Reference Manual: Inline functions</title>

<meta name="description" content="GNU Scientific Library &ndash; Reference Manual: Inline functions">
<meta name="keywords" content="GNU Scientific Library &ndash; Reference Manual: Inline functions">
<meta name="resource-type" content="document">
<meta name="distribution" content="global">
<meta name="Generator" content="makeinfo">
<meta http-equiv="Content-Type" content="text/html; charset=utf-8">
<link href="index.html#Top" rel="start" title="Top">
<link href="Function-Index.html#Function-Index" rel="index" title="Function Index">
<link href="Using-the-library.html#Using-the-library" rel="up" title="Using the library">
<link href="Long-double.html#Long-double" rel="next" title="Long double">
<link href="ANSI-C-Compliance.html#ANSI-C-Compliance" rel="previous" title="ANSI C Compliance">
<style type="text/css">
<!--
a.summary-letter {text-decoration: none}
blockquote.smallquotation {font-size: smaller}
div.display {margin-left: 3.2em}
div.example {margin-left: 3.2em}
div.indentedblock {margin-left: 3.2em}
div.lisp {margin-left: 3.2em}
div.smalldisplay {margin-left: 3.2em}
div.smallexample {margin-left: 3.2em}
div.smallindentedblock {margin-left: 3.2em; font-size: smaller}
div.smalllisp {margin-left: 3.2em}
kbd {font-style:oblique}
pre.display {font-family: inherit}
pre.format {font-family: inherit}
pre.menu-comment {font-family: serif}
pre.menu-preformatted {font-family: serif}
pre.smalldisplay {font-family: inherit; font-size: smaller}
pre.smallexample {font-size: smaller}
pre.smallformat {font-family: inherit; font-size: smaller}
pre.smalllisp {font-size: smaller}
span.nocodebreak {white-space:nowrap}
span.nolinebreak {white-space:nowrap}
span.roman {font-family:serif; font-weight:normal}
span.sansserif {font-family:sans-serif; font-weight:normal}
ul.no-bullet {list-style: none}
-->
</style>


</head>

<body lang="en" bgcolor="#FFFFFF" text="#000000" link="#0000FF" vlink="#800080" alink="#FF0000">
<a name="Inline-functions"></a>
<div class="header">
<p>
Next: <a href="Long-double.html#Long-double" accesskey="n" rel="next">Long double</a>, Previous: <a href="ANSI-C-Compliance.html#ANSI-C-Compliance" accesskey="p" rel="previous">ANSI C Compliance</a>, Up: <a href="Using-the-library.html#Using-the-library" accesskey="u" rel="up">Using the library</a> &nbsp; [<a href="Function-Index.html#Function-Index" title="Index" rel="index">Index</a>]</p>
</div>
<hr>
<a name="Inline-functions-1"></a>
<h3 class="section">2.5 Inline functions</h3>
<a name="index-HAVE_005fINLINE-1"></a>
<a name="index-GSL_005fC99_005fINLINE-1"></a>
<a name="index-inline-functions"></a>
<a name="index-HAVE_005fINLINE"></a>
<a name="index-GSL_005fC99_005fINLINE"></a>
<a name="index-C99_002c-inline-keyword"></a>
<a name="index-extern-inline"></a>
<p>The <code>inline</code> keyword is not part of the original ANSI C standard
(C89) so the library does not export any inline function definitions
by default.  Inline functions were introduced officially in the newer
C99 standard but most C89 compilers have also included <code>inline</code> as
an extension for a long time.
</p>
<p>To allow the use of inline functions, the library provides optional
inline versions of performance-critical routines by conditional
compilation in the exported header files.  The inline versions of these
functions can be included by defining the macro <code>HAVE_INLINE</code>
when compiling an application,
</p>
<div class="example">
<pre class="example">$ gcc -Wall -c -DHAVE_INLINE example.c
</pre></div>

<p>If you use <code>autoconf</code> this macro can be defined automatically.  If
you do not define the macro <code>HAVE_INLINE</code> then the slower
non-inlined versions of the functions will be used instead.
</p>
<p>By default, the actual form of the inline keyword is <code>extern
inline</code>, which is a <code>gcc</code> extension that eliminates unnecessary
function definitions.  If the form <code>extern inline</code> causes
problems with other compilers a stricter autoconf test can be used,
see <a href="Autoconf-Macros.html#Autoconf-Macros">Autoconf Macros</a>.
</p>
<p>When compiling with <code>gcc</code> in C99 mode (<code>gcc -std=c99</code>) the
header files automatically switch to C99-compatible inline function
declarations instead of <code>extern inline</code>.  With other C99
compilers, define the macro <code>GSL_C99_INLINE</code> to use these
declarations.
</p>



</body>
</html>