宏会导致编译器错误,其名称为NSString变量

时间:2019-02-18 15:41:54

标签: objective-c macos c-preprocessor

我正在尝试定义一个这样的宏:

#define LogMethod(uuid) [LogManager logString:[NSString stringWithFormat:@"%s", __PRETTY_FUNCTION__] uuid:(uuid)];

并这样称呼它:

NSString *stringUUID = [[NSUUID UUID] UUIDString];
LogMethod(stringUUID)

但是我遇到编译器错误

  

选择器'logString:stringUUID:'的未知类方法

似乎将stringUUID作为字符串而不是对象的字符串传递。这样可以将对象传递给C宏吗?

1 个答案:

答案 0 :(得分:2)

预处理器与uuid:uuid位混淆,并将其扩展到stringUUID:stringUUID

尝试:

#define LogMethod(x) [LogManager logString:[NSString stringWithFormat:@"%s", __PRETTY_FUNCTION__] uuid:(x)];