Mailing Lists: Apple Mailing Lists

Image of Mac OS face in stamp
 
[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

Re: kEventParamPostTarget



If I were writing the framework/universal headers, that would have been my choice.
And for the purist/pedantic among us, you could always do something along the lines of


#if _cplusplus
   const CFAllocatorRef kCFAllocatorDefault = NULL;
#else
   #define kMyCFAllocatorDefault NULL
#endif

In straight C, the global const here would use up space for every file that #includes the header, requiring the use of #define; in C++, the compiler does not use storage for this sort of constant global. (That's one of the things that makes it hard to write straight C code without using macros all over the place. C does let you [ab]use enum for constant global integral values, but that's the best you've got.)


Kevin Grant wrote:

It's interesting how it's defined - but NULL still works, doesn't it?
Why not "#define kMyCFAllocatorDefault NULL" and use that constant to get the best of both (aside from purist reasons of not liking #define)?


Kevin G.

<offtopic>
I was never actually a fan of kCFAllocatorDefault. The biggest reason was that early versions of CarbonLib didn't even export that symbol, so you can't use it in code that targets pre-OS 9.0. That's a non- issue nowadays, but there's still no advantage to using the named "constant"--there is a disadvantage, however, because in this case it's not as efficient as a regular constant! The headers define it as


/* This is a synonym for NULL, if you'd rather use a named constant. */
CF_EXPORT const CFAllocatorRef kCFAllocatorDefault;

Which means that every time you use it, the compiler goes and looks it up in memory instead of just sticking a zero into r3 like it could if you use NULL. Larger code size for no benefit.
Neither of these issues are really a big deal--the cost of the load is one or two extra opcodes, and nobody supports Mac OS 8 any more. So nowadays you can use whichever technique you prefer. Personally I'll stick with the smaller code size, since I'm used to seeing NULL as the allocator anyway.
</offtopic>



_______________________________________________
Do not post admin requests to the list. They will be ignored.
Carbon-dev mailing list      (email@hidden)
Help/Unsubscribe/Update your Subscription:
http://lists.apple.com/mailman/options/carbon-dev/email@hidden

This email sent to email@hidden
References: 
 >Re: kEventParamPostTarget (From: Laurence Harris <email@hidden>)
 >Re: kEventParamPostTarget (From: John Stiles <email@hidden>)
 >Re: kEventParamPostTarget (From: Kevin Grant <email@hidden>)



Visit the Apple Store online or at retail locations.
1-800-MY-APPLE

Contact Apple | Terms of Use | Privacy Policy

Copyright © 2007 Apple Inc. All rights reserved.