• 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: Macro to output an NSString containing function name, line number plus a string with a variable number of arguments?
[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

Re: Macro to output an NSString containing function name, line number plus a string with a variable number of arguments?


  • Subject: Re: Macro to output an NSString containing function name, line number plus a string with a variable number of arguments?
  • From: Wim Lewis <email@hidden>
  • Date: Tue, 17 Apr 2012 16:18:06 -0700

On 17 Apr 2012, at 4:01 PM, Laurent Daudelin wrote:

> You're probably right, Christiaan, as it doesn't work any better.
>
> So, how would a macro like this be written?

Macros work by being textually substituted into the place where they're referenced, so presumably you want something like this:

#define FileLog(format, ...) [NSString stringWithFormat:@"\n  %s [Line %d] \n       %@", __PRETTY_FUNCTION__, __LINE__, [NSString stringWithFormat:(format), ##__VA_ARGS__]]

Then FileLog() expands to an expression whose type is (NSString *), and you can use it in places where you might use other expressions (like function calls), eg:

  [logger logMessage:FileLog("foo %d", foovar) atLevel:LOG_DEBUG];

Alternately, if you actually do want the macro to expand into a statement, then the do{ ... }while(0) trick is the customary way to avoid unexpected results.

My usual approach for this particular case is to write a function-like macro like this:

#define FileLog(format, ...)  FileLogAtLocation(__PRETTY_FUNCTION__, __LINE__, [NSString stringWithFormat:(format), ##__VA_ARGS__])

and have FileLogAtLocation compose the final logged string. Or even to make the FileLogAtLocation() function variadic.



 _______________________________________________
Do not post admin requests to the list. They will be ignored.
Xcode-users mailing list      (email@hidden)
Help/Unsubscribe/Update your Subscription:

This email sent to email@hidden

  • Follow-Ups:
    • Re: Macro to output an NSString containing function name, line number plus a string with a variable number of arguments?
      • From: Ken Thomases <email@hidden>
    • Re: Macro to output an NSString containing function name, line number plus a string with a variable number of arguments?
      • From: Laurent Daudelin <email@hidden>
References: 
 >Macro to output an NSString containing function name, line number plus a string with a variable number of arguments? (From: Laurent Daudelin <email@hidden>)
 >Re: Macro to output an NSString containing function name, line number plus a string with a variable number of arguments? (From: Marco S Hyman <email@hidden>)
 >Re: Macro to output an NSString containing function name, line number plus a string with a variable number of arguments? (From: Christiaan Hofman <email@hidden>)
 >Re: Macro to output an NSString containing function name, line number plus a string with a variable number of arguments? (From: Laurent Daudelin <email@hidden>)

  • Prev by Date: Re: Macro to output an NSString containing function name, line number plus a string with a variable number of arguments?
  • Next by Date: Re: Macro to output an NSString containing function name, line number plus a string with a variable number of arguments?
  • Previous by thread: Re: Macro to output an NSString containing function name, line number plus a string with a variable number of arguments?
  • Next by thread: Re: Macro to output an NSString containing function name, line number plus a string with a variable number of arguments?
  • Index(es):
    • Date
    • Thread