Макрос вызывает ошибку компилятора с именем переменной NSString - PullRequest
0 голосов
/ 18 февраля 2019

Я пытаюсь определить макрос следующим образом:

#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 голосов
/ 18 февраля 2019

Препроцессор путается с битом uuid:uuid и расширяет его до stringUUID:stringUUID.

Попробуйте:

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