2010-07-07 4 views
3

Как работают #defines в объективе-c? У меня есть фон в C/C++, и теперь я пытаюсь найти objecive-c. #defines, похоже, не работают в объектно-с таким же образом, как они работают в c и C++, где компилятор просто заменяет все ссылки на определения тем, что они должны представлять.#defines in object-c

Когда я пытаюсь использовать #defines в объективе-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, между прочим, просто это может повлиять.

ответ

6

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

+0

Его большой проект #defines в использовании в разных файлах, где я хочу их использовать, мне, вероятно, придется выложить весь проект, чтобы найти его. Я должен просто делать что-то глупое, плохо понять это. По крайней мере, теперь я точно знаю, что он работает так же, как и в C, спасибо. – Tiddly

2

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

+0

Это очень полезно! – ebi

6

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

Смежные вопросы