2011-05-15 73 views
0

我想重复NSLog但没有在开始时所有不必要的日期。我尝试了下面的c函数(我自己做的),但它不会记录任何不是NSStrings的其他值。请你能告诉我如何做到这一点,以便记录任何价值?帮助C printf函数

static void echo(NSString *fmt, ...) { 
    printf("<<<<<<<%s>>>>>>>", [fmt UTF8String]); 
} 

回答

1

要在C可变参数参数列表,你需要使用附带的编译器STDARG.H头文件中定义的几个宏。

here is a detailed explanation of how to write your own printf

如果你只是想给参数传递给无需进一步处理就可以用printf代替vfprintf变种真正的printf,但你需要单独延长FMT参数:

static void echo(NSString *fmt, ...) 
{ 
    va_list args; 
    NSString *logfmt = [NSString stringWithFormat: @"<<<<<<<%s>>>>>>>", [fmt UTF8String]]; 
    va_start (args, fmt); 
    vfprintf(stdout, [logfmt UTF8String], args); 
    va_end (args); 
    [logfmt release]; 
}