Groups | Search | Server Info | Keyboard shortcuts | Login | Register [http] [https] [nntp] [nntps]
Groups > comp.lang.c++ > #82795
| From | David Brown <david.brown@hesbynett.no> |
|---|---|
| Newsgroups | comp.lang.c++ |
| Subject | Re: Inline functions and locals |
| Date | 2022-01-17 11:35 +0100 |
| Organization | A noiseless patient Spider |
| Message-ID | <ss3gph$l5p$1@dont-email.me> (permalink) |
| References | (2 earlier) <srrmd6$1bo0$1@gioia.aioe.org> <srs97q$qov$1@dont-email.me> <ss2vdc$eo5$1@gioia.aioe.org> <ss34s6$53h$1@dont-email.me> <ss375r$gjs$1@dont-email.me> |
On 17/01/2022 08:51, Chris M. Thomasson wrote: > On 1/16/2022 11:12 PM, David Brown wrote: >> On 17/01/2022 06:38, Juha Nieminen wrote: >>> Andrey Tarasevich <andreytarasevich@hotmail.com> wrote: >>>> As a historical note, it is true that keyword `inline` was originally >>>> introduced specifically to "suggest" inlining of function bodies at >>>> call >>>> sites. But it quickly became clear that it is useless and >>>> unnecessary in >>>> this role. As a consequence, its role was refocused to being a "ODR >>>> defeater" - a completely different purpose. >>> >>> And as a side note, the C standard also added support for 'inline' >>> functions, except that it's a different and very weird version of it >>> that >>> to this day I still don't fully understand. It's like an 'inline' that's >>> *not* an "ODR defeater". (It's so confusing that the vast, vast majority >>> of C programmers just write "static inline" to get around the confusing >>> part.) >>> >> >> Yes, "inline" functions in C are a bit odd, and the semantics are not >> the same as in C++. As you say, the most common usage (and the only way >> I use it) is to write "static inline" for functions to replace what >> might pre-C99 have been a function-like macro. The "inline" here is not >> actually very significant - any decent C compiler will make its own >> decisions about actual inlining optimisations, so a plain "static" >> function would have the same effect. To me, at least, the "static >> inline" is a documentation of how you see the function and expect it to >> be used. > [...] > > Imvvvho, using inline is almost akin to almost begging the compiler to > actually inline the function. It certainly can say f-you, and give the > programmer the proverbial middle finger at the same time! For some > reason it kind of makes me think of the register keyword... > > Now, it would be funny if a compiler would output something like: > > this function cannot be inlined, go ahead and try turning on link time > optimization, and try again? ;^) > > "inline" does not make such demands of the compiler - in C or C++. In C++ it is very useful for letting you put definitions in headers (an "ODR defeater", as some call it). In C, with decent compilers, it is much less useful as you could use a non-inline "static" function in a header and get pretty much the same effect as a "static inline" function. To me, it is as much a documentation of the programmer intention as anything else. If you want to insist that the compiler really does inline a function, you need to use compiler-specific features - like gcc/clang "always_inline" attribute. If you want the compiler to complain when it can't inline a function, gcc has "-Winline" (or "-Werror=inline" for an error).
Back to comp.lang.c++ | Previous | Next — Previous in thread | Next in thread | Find similar | Unroll thread
Inline functions and locals Muttley@dastardlyhq.com - 2022-01-12 16:34 +0000
Re: Inline functions and locals Bonita Montero <Bonita.Montero@gmail.com> - 2022-01-12 17:38 +0100
Re: Inline functions and locals James Kuyper <jameskuyper@alumni.caltech.edu> - 2022-01-12 12:47 -0500
Re: Inline functions and locals Juha Nieminen <nospam@thanks.invalid> - 2022-01-13 07:00 +0000
Re: Inline functions and locals "Alf P. Steinbach" <alf.p.steinbach@gmail.com> - 2022-01-13 10:45 +0100
Re: Inline functions and locals Juha Nieminen <nospam@thanks.invalid> - 2022-01-17 12:55 +0000
Re: Inline functions and locals David Brown <david.brown@hesbynett.no> - 2022-01-17 15:14 +0100
Re: Inline functions and locals Andrey Tarasevich <andreytarasevich@hotmail.com> - 2022-01-17 10:24 -0800
Re: Inline functions and locals David Brown <david.brown@hesbynett.no> - 2022-01-17 19:46 +0100
Re: Inline functions and locals Bonita Montero <Bonita.Montero@gmail.com> - 2022-01-13 11:08 +0100
Re: Inline functions and locals Andrey Tarasevich <andreytarasevich@hotmail.com> - 2022-01-13 19:30 -0800
Re: Inline functions and locals Paavo Helde <eesnimi@osa.pri.ee> - 2022-01-13 12:46 +0200
Re: Inline functions and locals Muttley@dastardlyhq.com - 2022-01-13 15:38 +0000
Re: Inline functions and locals Andrey Tarasevich <andreytarasevich@hotmail.com> - 2022-01-13 17:51 -0800
Re: Inline functions and locals Muttley@dastardlyhq.com - 2022-01-14 11:22 +0000
Re: Inline functions and locals Öö Tiib <ootiib@hot.ee> - 2022-01-14 04:02 -0800
Re: Inline functions and locals Manfred <invalid@invalid.add> - 2022-01-14 17:30 +0100
Re: Inline functions and locals Muttley@dastardlyhq.com - 2022-01-14 16:49 +0000
Re: Inline functions and locals Muttley@dastardlyhq.com - 2022-01-14 16:40 +0000
Re: Inline functions and locals Öö Tiib <ootiib@hot.ee> - 2022-01-14 11:28 -0800
Re: Inline functions and locals "Alf P. Steinbach" <alf.p.steinbach@gmail.com> - 2022-01-14 20:29 +0100
Re: Inline functions and locals James Kuyper <jameskuyper@alumni.caltech.edu> - 2022-01-14 08:34 -0500
Re: Inline functions and locals James Kuyper <jameskuyper@alumni.caltech.edu> - 2022-01-14 11:26 -0500
Re: Inline functions and locals David Brown <david.brown@hesbynett.no> - 2022-01-14 18:47 +0100
Re: Inline functions and locals Andrey Tarasevich <andreytarasevich@hotmail.com> - 2022-01-14 08:43 -0800
Re: Inline functions and locals Juha Nieminen <nospam@thanks.invalid> - 2022-01-17 05:38 +0000
Re: Inline functions and locals David Brown <david.brown@hesbynett.no> - 2022-01-17 08:12 +0100
Re: Inline functions and locals "Chris M. Thomasson" <chris.m.thomasson.1@gmail.com> - 2022-01-16 23:51 -0800
Re: Inline functions and locals "Chris M. Thomasson" <chris.m.thomasson.1@gmail.com> - 2022-01-16 23:55 -0800
Re: Inline functions and locals David Brown <david.brown@hesbynett.no> - 2022-01-17 11:35 +0100
Re: Inline functions and locals Juha Nieminen <nospam@thanks.invalid> - 2022-01-17 09:50 +0000
Re: Inline functions and locals James Kuyper <jameskuyper@alumni.caltech.edu> - 2022-01-17 14:39 -0500
Re: Inline functions and locals Tim Rentsch <tr.17687@z991.linuxsc.com> - 2022-01-17 15:34 -0800
Re: Inline functions and locals "james...@alumni.caltech.edu" <jameskuyper@alumni.caltech.edu> - 2022-01-17 15:50 -0800
Re: Inline functions and locals Tim Rentsch <tr.17687@z991.linuxsc.com> - 2022-04-25 03:42 -0700
Re: Inline functions and locals "james...@alumni.caltech.edu" <jameskuyper@alumni.caltech.edu> - 2022-04-25 08:48 -0700
Re: Inline functions and locals Andrey Tarasevich <andreytarasevich@hotmail.com> - 2022-01-16 23:53 -0800
Re: Inline functions and locals Tim Rentsch <tr.17687@z991.linuxsc.com> - 2022-01-17 15:29 -0800
Re: Inline functions and locals Bonita Montero <Bonita.Montero@gmail.com> - 2022-01-17 12:40 +0100
Re: Inline functions and locals Andrey Tarasevich <andreytarasevich@hotmail.com> - 2022-01-17 10:13 -0800
Re: Inline functions and locals James Kuyper <jameskuyper@alumni.caltech.edu> - 2022-01-17 16:15 -0500
Re: Inline functions and locals Andrey Tarasevich <andreytarasevich@hotmail.com> - 2022-01-17 16:28 -0800
Re: Inline functions and locals James Kuyper <jameskuyper@alumni.caltech.edu> - 2022-01-17 22:55 -0500
Re: Inline functions and locals Andrey Tarasevich <andreytarasevich@hotmail.com> - 2022-01-18 11:32 -0800
Re: Inline functions and locals James Kuyper <jameskuyper@alumni.caltech.edu> - 2022-01-18 19:03 -0500
Re: Inline functions and locals Andrey Tarasevich <andreytarasevich@hotmail.com> - 2022-01-18 17:22 -0800
Re: Inline functions and locals Bonita Montero <Bonita.Montero@gmail.com> - 2022-01-18 09:20 +0100
csiph-web