Empty inline functions vs. empty CPP macros
Joel Sherrill
joel.sherrill at OARcorp.com
Tue Mar 11 14:11:49 UTC 2014
Empty static inlines normally optimize away. So no worries there.
I always prefer static inlines over macros.
Do you have specific example? There are places this may work but
others that it cannot.
--joel
On 3/11/2014 8:01 AM, Gedare Bloom wrote:
> On Tue, Mar 11, 2014 at 4:47 AM, Sebastian Huber
> <sebastian.huber at embedded-brains.de> wrote:
>> Hello,
>>
>> I would like to add a new section to the RTEMS coding style. How do we want
>> to deal with features available only in case certain pre-processor symbols
>> are defined? For example
>>
>> #define FEATURE_X
>>
>> 1:
>>
>> static inline feature_x_func(int a, double b, void *c)
>> {
>> #ifdef FEATURE_X
>> /* Do something */
>> #else
>> (void) a;
>> (void) b;
>> (void) c;
>> #endif
>> }
>>
>> 2:
>>
>> #ifdef FEATRUE_X
>> static inline feature_x_func(int a, double b, void *c)
>> {
>> /* Do something */
>> }
>> #else
>> #define feature_x_func(a, b, c) do { } while ( 0 )
>> #endif
>>
>> 3:
>>
>> #ifdef FEATRUE_X
>> static inline feature_x_func(int a, double b, void *c)
>> {
>> /* Do something */
>> }
>> #else
>> #define feature_x_func(a, b, c) \
>> do { (void) *a); (void) (b); (void) (c); } while ( 0 )
>> #endif
>>
>> I am in favor of variant 1. since it has the benefit that type checks are
>> also performed in case feature X is disabled.
>>
> The advantage of checks is a good reason. I don't like option 3.
>
>> Is the optimization of an empty inline function really a problem for modern
>> compilers?
>>
> If no one knows, it should not take long to write a simple program to check.
>
>> In 2. we could also use an (for basedefs.h)
>>
>> #define RTEMS_EMTPY_MACRO do { } while ( 0 )
>>
> This option is "cleaner-looking" which is my preference for code
> readability. However the technical advantage of having the same
> function call invocation and thus type checks with option #1 is a good
> reason for it. I'm on the fence at the moment. I would like to get
> resolution about the question of optimizing compilers first.
>
> If the code size is the same with the two approaches, then I'm fine
> with option 1.
>
> -Gedare
>
>> --
>> Sebastian Huber, embedded brains GmbH
>>
>> Address : Dornierstr. 4, D-82178 Puchheim, Germany
>> Phone : +49 89 189 47 41-16
>> Fax : +49 89 189 47 41-09
>> E-Mail : sebastian.huber at embedded-brains.de
>> PGP : Public key available on request.
>>
>> Diese Nachricht ist keine geschäftliche Mitteilung im Sinne des EHUG.
>> _______________________________________________
>> rtems-devel mailing list
>> rtems-devel at rtems.org
>> http://www.rtems.org/mailman/listinfo/rtems-devel
> _______________________________________________
> rtems-devel mailing list
> rtems-devel at rtems.org
> http://www.rtems.org/mailman/listinfo/rtems-devel
--
Joel Sherrill, Ph.D. Director of Research & Development
joel.sherrill at OARcorp.com On-Line Applications Research
Ask me about RTEMS: a free RTOS Huntsville AL 35805
Support Available (256) 722-9985
More information about the devel
mailing list