On 17 Aug 2011, at 14:41, Andreas Höschler wrote: > Hi all, > >>> >>> I am cross-building on GNUstep/Solaris and MacOSX. When I build code like >>> >>> NSString *message = @"some string" >>> [NSException raise:NSInternalInconsistencyException format:message]; >>> >>> on MacOSX 10.6 using GNUstep make, gcc gives the following warning >>> >>> SOEditingContext.m:3574: warning: format not a string literal and no >>> format arguments >>> >>> Any idea how to get rid of that one? >> >> >> [NSException raise:NSInternalInconsistencyException format: @"%@", >> message]; >> >> The warning is because it can't do a compile time check of message to see if >> it's a valid format string ... you need to use a string literal as the >> format string. > > Thanks for your feedback! I know that this prevents the warning, but I can't > do that. The message is calculated by some method and then returned as a > string. I then need to raise the exception with the readily build string. If > NSException had a +[raise:string:] method I would use that, but it hasn't! :-(
The example I give above does exactly what you want then. > I have the same problem with NSLog(). I am again building the message > somewhere and get it as a NSString. I then simply want to log it out and get > the above warning. > > NSLog([localException description]); In this case, you would write NSLog(@"%@", [localException deswcription]); > That's simply annoying! :-( Isn't there some compiler switch that could be > used to suppress these kind of warnings? Maybe, but these are *good* warnings ... they prevent you from accidentally doing things like: Somewhere in your code ... message = @"%s %g"; later on crashing your app by ... [NSException raise: NSInternalInconsistencyException format: message]; Where the %s and %g cause an attempt to try to use random garbage from the stack. _______________________________________________ Discuss-gnustep mailing list [email protected] https://lists.gnu.org/mailman/listinfo/discuss-gnustep
