Groups | Search | Server Info | Keyboard shortcuts | Login | Register [http] [https] [nntp] [nntps]


Groups > comp.lang.c++ > #82795

Re: Inline functions and locals

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>

Show all headers | View raw


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 | NextPrevious in thread | Next in thread | Find similar | Unroll thread


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