2010-05-12 110 views
15

接下来是最后一个问题:Log method name in Obj-C。我只是想知道是否有办法打印出变量名称。例如:打印出变量名称objective-C

NSString *name = "vodkhang"; 
NCLog(@"%@", name); 

,我希望输出应该是:

name: vodkhang 

只是为了总结以前的帖子,目前,我可以打印出的类名,方法名和行号时我叫

NCLog(@"Hello World"); 
<ApplicationDelegate:applicationDidFinishLaunching:10>Hello world 

#define NCLog(s, ...) NSLog(@"<%@:%d> %@", __FUNCTION__, __LINE__, [NSString stringWithFormat:(s), ##__VA_ARGS__]) 

回答

35
#define logIntVariable(x) NSLog(@"Value of %s = %d",#x, x) 


- (void) myRoutine { 
    int intValue = 5; 

    logIntVariable(intValue); 
} 
+12

一般原理是,当在'#define'的主体内部放置一个'#'时,预处理器用传递给宏的* exact *表达式的C字符串替换它。当你传递一个变量名时,你会得到这个名字。如果您传递一个表达式,它将完整地重现该表达式,而不是评估结果。 – 2010-05-13 04:56:43

+0

@奎因:我明白了。感谢那 – vodkhang 2010-05-14 03:54:54