On 8/29/09 4:00 PM, Ken Thomases said:

>GCC knows about the standard formatting functions and applies the
>analysis to them automatically, by default.  However, it also allows
>the application of the __attribute__((format ...)) decoration to user-
>defined functions to have them checked in the same way.  This applies
>to all of the formatting-related warnings.
>
>There's -Wformat and -Wformat-security (among a few others).  The
>former checks the types, the latter also warns about a lone non-
>literal argument. -Wformat-security is ignored if -Wformat is not
>enabled, so -Wno-format disables both.
>
>Both warnings are available in GCC 4.0.1, but not enabled by default.
>They are apparently both enabled by default in GCC 4.2.1.  (Currently,
>-Wformat-security is a subset of -Wformat-nonliteral, which is
>apparently not enabled by default.  It warns when the format string is
>a non-literal even if it's followed by arguments.)

The following common usage now trips this warning:

----
#import <Cocoa/Cocoa.h>

int main (void)
{
        NSString* foo = [NSString stringWithFormat:
                NSLocalizedString(@"%d days ago", @"some comment"),
                350];

        return 0;
}
----

$ gcc-4.2 -Wformat=2 -framework Cocoa test.m
test.m: In function 'main':
test.m:7: warning: format not a string literal, argument types not checked


Other than removing the warning, or hacking the headers in the SDK (to
add compiler decorations), anyone have any suggestions on how to rewrite
this code to work with that warning?

Thanks,

--
____________________________________________________________
Sean McBride, B. Eng                 s...@rogue-research.com
Rogue Research                        www.rogue-research.com
Mac Software Developer              Montréal, Québec, Canada


_______________________________________________

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