#defines в target-c - PullRequest
       1

#defines в target-c

3 голосов
/ 07 июля 2010

Как работает #defines в Objective-C?

У меня есть опыт работы в C / C ++, и сейчас я пытаюсь подобрать Objective-C. #defines, похоже, не работают в target-c так же, как они работают в c и C ++, где компилятор просто заменяет все ссылки на определения тем, что они должны представлять.

Когда я пытаюсь использовать #defines в Objective-C, они работают только иногда. Например, когда я делаю что-то вроде этого;

#define NUMBER 5

int myArray[NUMBER];

Я получаю ошибки компилятора, говорящие об отсутствии квадратной скобки, где, если я использую эту строку, она работает нормально;

int myArray[5];

Наверняка это должно быть одно и то же?

Также, если я пытаюсь использовать значение #define в любых уравнениях, я получаю похожие ошибки компиляции. Этот код не работает;

#define NUMBER 5

float var = NUMBER * 0.2;

Где, как это хорошо;

float var = 5 * 0.2;

Любой, кто знает, почему это может быть, или как #defines обрабатываются компилятором Objective-C по-разному. Кстати, я использую XCode, только если это имеет значение.

Ответы [ 3 ]

6 голосов
/ 05 июля 2011

Обычно я вижу такие проблемы, когда у меня есть случайная точка с запятой в #define.

6 голосов
/ 07 июля 2010

#define в Objective-C работает точно так же, как и в C. Все ваши примеры отлично работают для меня в быстром тесте, который я пробовал. Вероятно, у вас есть какая-то другая проблема, связанная с ошибками, которые вы видите - вы можете опубликовать свой фактический код и текст сообщений об ошибках?

2 голосов
/ 07 июля 2010

Чтобы выяснить поведение ваших #defines, я бы предложил использовать команду Xcode Build-> Preprocess, чтобы точно узнать, какой текст генерирует для вас препроцессор.

...