Почему я не могу поместить константу в CGRectMake? - PullRequest
1 голос
/ 19 июля 2009

Я пробовал это:

CGRectMake(0.0f, kFooBarHeight, 100.0f, 10.0f);

Я получаю сообщение об ошибке unexpected ';' before ')' и too few arguments for CGRectMake. Когда я обмениваю это с:

CGFloat foo = kFooBarHeight;
CGRectMake(0.0f, foo, 100.0f, 10.0f);

тогда все в порядке. Разве константы не подходят для передачи в качестве параметров?

Ответы [ 2 ]

15 голосов
/ 19 июля 2009

Без определения kFooBarHeight невозможно дать хороший ответ, но я предполагаю, что вы определили kFooBarHeight, используя определение препроцессора? Если да, то лучше всего добавить точку с запятой в конец. Ваше определение должно выглядеть так: #define kFooBarHeight 10, но вы установили как: #define kFooBarHeight 10;.

Если у вас есть второе определение, когда оно заменено препроцессором, вы получите:

CGRectMake(0.0f, 10;, 100.0f, 10.0f);

Вот почему ваш второй пример работает правильно, он расширяется до:

CGFloat foo = 10;;
CGRectMake(0.0f, foo, 100.0f, 10.0f);

Опять же, это просто обоснованное предположение, невозможно сказать без фактического определения kFooBarHeight.

3 голосов
/ 19 июля 2009

Измени свой

#define kFooBarHeight 100;

до

#define kFooBarHeight 100

Точки с запятой не должны использоваться для завершения #defines, если вы не знаете наверняка, как они будут использоваться.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...