I am trying to be 32/64 bit "clean" in some new code that I am writing. When I declare some integer values, say for named option values as shown here, what is the type that the compiler assigns to these values?

enum {
        SomeOptionValue     = 1,
        AnotherOptionValue  = 2,
};

The type matters to the construction of an NSLog statement. If the type is NSInteger, then it seems the best way (for 32/64 bit compatibility) to display its value is:

NSLog(@"SomeOptionValue = %ld", (long) SomeOptionValue);

Or so I conclude from reading:
[1] String Format Specifiers
http://developer.apple.com/documentation/Cocoa/Conceptual/Strings/Articles/formatSpecifiers.html

[2] 64-Bit Transition Guide: Type Specifiers
http://developer.apple.com/documentation/Cocoa/Conceptual/Cocoa64BitGuide/ConvertingExistingApp/chapter_4_section_3.html

Separately, from a space efficiency perspective, would it be better in the case of having a small set of option values to force the type to be an unsigned int? That is, if I have a method that takes such an option, which of the following method signatures is nowadays preferred?

- (void) someMethodWithOption:(unsigned int)optionValue;

- (void) someMethodWithOption:(NSInteger)optionValue;






_______________________________________________

Cocoa-dev mailing list (Cocoa-dev@lists.apple.com)

Please do not post admin requests or moderator comments to the list.
Contact the moderators at cocoa-dev-admins(at)lists.apple.com

Help/Unsubscribe/Update your Subscription:
http://lists.apple.com/mailman/options/cocoa-dev/archive%40mail-archive.com

This email sent to arch...@mail-archive.com

Reply via email to