Ожидаемый идентификатор или ‘(‘ отсутствует

#objective-c #xcode

#objective-c #xcode

Вопрос:

Я получаю эту проблему, которую я прокомментировал в своем основном файле:

 #import <Foundation/Foundation.h>
#import "Person.h"

int main (int argc, const char * argv[])
{

    // Create an instance of Person
    Person *person = [[Person alloc]init];

    // Give the instance variables interesting values
    [person setWeightInKilos:96];
    [person setHeightInMeters:1.8];

    // Call the body mass index
    float bmi = [person bodyMassIndex];
    NSLog(@"person has a bmi of %f", bmi);

    }
    return 0;                           // Expected identifier or '('
 }                                       // Expected external declaration
  

Person.h

 #import <Foundation/Foundation.h>

@interface Person : NSObject {
    float heightInMeters;
    int weightInKilos;
}

// You will be able to set those instance variables using these methods
- (void)setHeightInMeters:(float)h;
- (void)setWeightInKilos:(int)w;

// This method calculates the body weight index
- (float)bodyMassIndex;

@end
  

Person.m

 #import "Person.h"

@implementation Person

- (void)setHeightInMeters:(float)h{
    heightInMeters = h;  
}

- (void)setWeightInKilos:(int)w {
    weightInKilos = w;
}

- (float)bodyMassIndex {
    return weightInKilos / (heightInMeters * heightInMeters);  
}

@end
  

Ответ №1:

У вас есть ошибка } в вашей программе перед return 0; . Ошибка скорее вводит в заблуждение. Возможно, вы захотите переключиться на использование LLVM вместо GCC (это также ускорит компиляцию, а не только исправит ошибки).

Комментарии:

1. Спасибо; это сделало свое дело. Я использую компилятор Apple LLVM 3.0, поэтому я не уверен, почему он вернул ошибку.

2. @pdenlinger: Вы? Ха, с этой ошибкой я ожидал, что это будет GCC. Похоже, LLVM, безусловно, мог бы здесь справиться лучше. Не могли бы вы отправить отчет об ошибке ?

3. Я не зарегистрированный разработчик Apple, как мне подать файл? Могу ли я отправить ссылку на эту страницу на адрес электронной почты Apple, сообщающий об ошибках?

4. @pdenlinger: Все, что вам нужно, это учетная запись Apple Developer Connection, которая бесплатна (стоят только программы для разработчиков iOS и Mac, вы можете бесплатно зарегистрироваться здесь ). С учетной записью ADC вы можете сообщать об ошибках по адресу bugreport.apple.com . На странице отчета об ошибке должно быть объяснено, как подать отчет. Если вы можете взять свой код и поместить его в образец проекта Xcode, который при сборке продемонстрирует проблему, тогда вы можете прикрепить весь проект к своему отчету.

Ответ №2:

У вас есть дополнительная закрывающая фигурная скобка в нижней части вашей основной функции. Прямо над строкой «return 0;».

Ответ №3:

Что закрывающая скобка делает перед вашим возвратом в вашей основной функции? Я думаю, вы закрыли 1 для многих.