Format指定类型'int'但参数的类型为'NSString*'

fyx*_*yry 2 generics macros objective-c nslog ios

任何人:

我想使用一个宏来打印日志,接下来,

#define isaObject(parameter) _Generic((parameter), id: YES, id __strong: YES, default: NO)
#define kNSLog(parameter) do                   \
    {                                          \
        BOOL is = isaObject((parameter));      \
        if (is)                                \
        {                                      \
            NSLog(@"----Yes : %@", parameter); \
        }                                      \
        else                                   \
        {                                      \
            NSLog(@"----No : %d", parameter);  \
        }                                      \
    } while (NO)


int i = 99;
NSString * s = @"abcd";

kNSLog(i);
kNSLog(s);
Run Code Online (Sandbox Code Playgroud)

然后,编译器发出警告"Format指定类型'int',但参数的类型为'NSString*'".

怎么修改,拜托?

pic*_*ano 6

您可以显式地将参数强制转换为a int以避免该警告:

NSLog(@"----No : %d", (int)parameter); \