Ошибка препроцессора в NSLog - PullRequest
0 голосов
/ 08 сентября 2010

В BlaBlaBla_prefix.pch Я определяю следующее:

#import "SMDeviceManager.h"
#define DeviceSpecificResourceName(name) [SMDeviceManager deviceSpecificResourceName:(name)];

Но если я знаю, использовать эту функцию в моем коде внутри вызова NSog (), я получаю следующую ошибку во время компиляции:

Ожидается ")" до ";" маркер.

Но если я сохраню вывод в переменной, вместо непосредственного вызова функции в NSLog, это сработает.

NSString *test = DeviceSpecificResourceName(@"eintest.png");
NSLog(@"%@", test);

Это записывает ожидаемое значение. B Но, с другой стороны, он не скомпилируется. Что я делаю неправильно? Не могли бы вы помочь мне?

1 Ответ

5 голосов
/ 08 сентября 2010
<sup><code>#define DeviceSpecificResourceName(name) [SMDeviceManager deviceSpecificResourceName:(name)];
//                                                                                          ^ remove
</code></sup>

Удалить последнюю точку с запятой.


Если вы сохраните ;, выписка NSLog(@"%@", DeviceSpecificResourceName(@"eintest.png")) будет заменена на

NSLog(@"%@", [SMDeviceManager deviceSpecificResourceName:(@"eintest.png")];);
//                                                                        ^

что, конечно, является синтаксической ошибкой.

...