2013-11-25 6 views
0

Сначала я определяю значение.Ошибка iOS Ожидаемая ')'

#import "ViewController.h" 
#define SLIDE_TOP 100; 
#define SLIDE_BOTTOM -100; 

if(distance > SLIDE_TOP){ 
    NSLog(@"TOP"); 
} 

я нашел те же ошибки

1. ViewController.m: 98: 19: Ожидаемая ')' 2. ViewController.m: 98: 19: Если оператор имеет пустое тело

ответ

3

Когда вы #define что-то, препроцессор просто заменяет токены замены (все после идентификатора) для идентификатора в исходном коде. Таким образом, ваш, если заявление выглядит следующим образом после прогонов препроцессора:

if (distance > 100;) { 
    NSLog(@"TOP"); 
} 

Обратите внимание, что точка с запятой после «100» является включен. Компилятор не ожидает, что инструкция закончится там, потому что есть непревзойденная открытая скобка, поэтому она жалуется, что вам не хватает «)». Исправление удалить точку с запятой с конца #define заявления:

#define SLIDE_TOP 100 
1

Изменение этих

#define SLIDE_TOP 100; 
#define SLIDE_BOTTOM -100; 

в

#define SLIDE_TOP 100 
#define SLIDE_BOTTOM -100 

; не требуется в define.

+1

предположение верно, но последнее предложение ввести в заблуждение. Вы можете поместить все в '# define', и он будет вслепую замещен препроцессором. В этом случае ';' не имеет смысла, но в других случаях это может быть. –

+0

Да, извините. –

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