The -Wformat compiler warning option (“Typecheck calls to printf/scanf”) 
complains about the use of NSIntegers as parameters to printf-style functions … 
but only on iOS. (Or maybe only on 32-bit builds?) This is a PITA when 
developing cross-platform code — I do most of my development targeting Mac OS 
because it’s easier to run, but then I’ll break the build when I accidentally 
do something like
        NSInteger code = …..;
        NSLog(@“Closed with code %ld”, code);
which compiles fine for Mac OS, but causes an error on iOS:

/Couchbase/CouchbaseLite/Source/ChangeTracker/CBLWebSocketChangeTracker.m:256:78:
 error: values of type 'NSInteger' should not be used as format arguments; add 
an explicit cast to 'long' instead [-Werror,-Wformat]
        LogTo(ChangeTracker, @"%@: closed with code %ld, reason '%@'", self, 
effectiveCode, reason);
                                                    ~~~                      
^~~~~~~~~~~~~
                                                                             
(long)

I’ve got the exact same warning flags enabled for both platforms. Is there a 
way I can enable this warning consistently in a build for any 
platform/word-size?

(To be clear: I understand why this behaves differently, due to the [awful] 
decision to make NSInteger different sizes in 32-bit vs 64-bit. But at a high 
level it’s an inconsistent warning, when you have multiple platforms to build 
for.)

—Jens
 _______________________________________________
Do not post admin requests to the list. They will be ignored.
Xcode-users mailing list      (Xcode-users@lists.apple.com)
Help/Unsubscribe/Update your Subscription:
https://lists.apple.com/mailman/options/xcode-users/archive%40mail-archive.com

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

Reply via email to