• Open Menu Close Menu
  • Apple
  • Shopping Bag
  • Apple
  • Mac
  • iPad
  • iPhone
  • Watch
  • TV
  • Music
  • Support
  • Search apple.com
  • Shopping Bag

Lists

Open Menu Close Menu
  • Terms and Conditions
  • Lists hosted on this site
  • Email the Postmaster
  • Tips for posting to public mailing lists
Re: Inline C functions in Xcode 3
[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

Re: Inline C functions in Xcode 3


  • Subject: Re: Inline C functions in Xcode 3
  • From: Eric Albert <email@hidden>
  • Date: Sat, 03 Nov 2007 15:30:07 -0700

On Nov 3, 2007, at 3:21 PM, Steve Checkoway wrote:

On Nov 3, 2007, at 1:59 PM, Eric Albert wrote:

I'd strongly advise against using either FOUNDATION_STATIC_INLINE or CF_INLINE. Neither is supported for anything other than Foundation or CF's uses. They may work for you, but the Foundation and CF engineers may change them at any point.

Speaking of inline, what is the difference (if any) between __inline, __inline__, and __attribute__((always_inline))? Looking at the definitions of CF_INLINE, I see:


#if defined(__GNUC__) && (__GNUC__ == 4) && !defined(DEBUG)
#define CF_INLINE static __inline__ __attribute__ ((always_inline))
#elif defined(__GNUC__)
#define CF_INLINE static __inline__
#elif defined(__MWERKS__) || defined(__cplusplus)
#define CF_INLINE static inline
#elif defined(_MSC_VER)
#define CF_INLINE static __inline
#elif defined(__WIN32__)
#define CF_INLINE static __inline__
#endif


Why this header using __inline__ __attribute__((always_inline)) for gcc 4.x?

Both C++98 and C99 include an inline keyword and they seem to be about the same--as opposed to how gcc, at least, treats inline in C89 vs. C99. Is there a reason to use __inline or __inline__ (both of which do work with gcc) instead of inline?

I'm not a compiler engineer and it's been a long time since I played one on TV, but here's what I think the differences are:
• inline: Not a part of C89, but added in C99. Available as a GCC extension. A suggestion to the compiler that it may want to consider inlining the function.
• __inline__: Explicitly a compiler extension due to the underscores. As with 'inline', also a suggestion.
• __attribute__((always_inline)): A GCC extension which directs the compiler that it must inline the function unless it's technically impossible to do so.


In general, you should use C99 (or any version of C++) and the inline keyword. __attribute__((always_inline)) should be avoided unless you know exactly what you're doing and you're certain the compiler isn't optimizing your functions declared inline well enough for you.

Hope this helps,
Eric

_______________________________________________
Do not post admin requests to the list. They will be ignored.
Xcode-users mailing list      (email@hidden)
Help/Unsubscribe/Update your Subscription:
This email sent to email@hidden


  • Follow-Ups:
    • Re: Inline C functions in Xcode 3
      • From: "Kyle Sluder" <email@hidden>
References: 
 >Inline C functions in Xcode 3 (From: David Riggle <email@hidden>)
 >Re: Inline C functions in Xcode 3 (From: Nick Zitzmann <email@hidden>)
 >Re: Inline C functions in Xcode 3 (From: Michael Nickerson <email@hidden>)
 >Re: Inline C functions in Xcode 3 (From: Eric Albert <email@hidden>)
 >Re: Inline C functions in Xcode 3 (From: Steve Checkoway <email@hidden>)

  • Prev by Date: Re: Inline C functions in Xcode 3
  • Next by Date: Re: Inline C functions in Xcode 3
  • Previous by thread: Re: Inline C functions in Xcode 3
  • Next by thread: Re: Inline C functions in Xcode 3
  • Index(es):
    • Date
    • Thread