• Open Menu Close Menu
  • Apple
  • Shopping Bag
  • Apple
  • Mac
  • iPad
  • iPhone
  • Watch
  • TV
  • Music
  • Support
  • Search apple.com
  • Shopping Bag

Lists

Open Menu Close Menu
  • Terms and Conditions
  • Lists hosted on this site
  • Email the Postmaster
  • Tips for posting to public mailing lists
Re: gcc parsing error?
[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

Re: gcc parsing error?


  • Subject: Re: gcc parsing error?
  • From: Ken Thomases <email@hidden>
  • Date: Mon, 1 Jun 2009 16:47:54 -0500

On Jun 1, 2009, at 4:33 PM, Dave DeLong wrote:

I'm writing a simple test project to try and isolate some unexpected behavior, and found more unexpected behavior (not what I was looking for).

I'm trying to use a simple NSAssert macro, like so:

NSAssert(NO, [NSString stringWithFormat:@"Caught unexpected exception: %@", e]);

However, when I try to compile, I get the error that "macro NSAssert passed 3 arguments, but takes just 2". To verify what I'm seeing, I tried changing it to:

NSAssert(NO, [NSString stringWithFormat:@"Caught unexpected exception: %@, %@", e, e]);

This tells me I'm passing 4 arguments to NSAssert (instead of the required 2). If I change it to:

NSString *err = [NSString stringWithFormat:@"Caught unexpected exception: %@", e];
NSAssert(NO, err);


That will compile appropriately. It would therefore appear that the statement is not getting correctly parsed.

So my question is: Is this expected/documented behavior? (My searches haven't found anything) If it isn't, is this a known issue? If not, where would be the best place to file a bug?

The problem seems to be that NSAssert is a macro, which is handled by the preprocessor rather than the compiler. While the compiler has been extended to understand Objective-C, the preprocessor may not have been. It might not be "legal" to extend it that way, since the preprocessor is used (abused?) in other contexts, for text processing.


It should be possible to work around the problem by surrounding the second argument in an extra pair of parentheses.

Regards,
Ken

_______________________________________________

Cocoa-dev mailing list (email@hidden)

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:
This email sent to email@hidden


References: 
 >gcc parsing error? (From: Dave DeLong <email@hidden>)

  • Prev by Date: Re: NSXMLParser - howto resolve entities defined in DTD
  • Next by Date: Re: gcc parsing error?
  • Previous by thread: Re: gcc parsing error?
  • Next by thread: Re: gcc parsing error?
  • Index(es):
    • Date
    • Thread