Объявление и использование функции C в Objective C - PullRequest
2 голосов
/ 21 января 2011

Это должно быть очень просто, но я не могу понять, как это сделать: у меня есть C-функция для мониторинга текущего использования памяти:

natural_t report_memory(void) {
    struct task_basic_info info;
    mach_msg_type_number_t size = sizeof(info);
    kern_return_t kerr = task_info(mach_task_self(),
                               TASK_BASIC_INFO,
                               (task_info_t)&info,
                               &size);
    if( kerr == KERN_SUCCESS ) {
        return info.resident_size;
    } else {
        NSLog(@"Error with task_info(): %s", mach_error_string(kerr));
        return 0;
    }
}

Теперь я хотел бы использовать это,Как мне объявить это в .h?Я попробовал (для меня) очевидные в рамках цели методы c:

natural_t report_memory(void);

Вызов этого где-то в коде:

NSLog(@"Memory used: %u", rvC.report_memory());

Компилятор жалуется error: called object is not a function.Таким образом, я предполагаю, что декларация как-то не так.Я пробовал несколько вариантов, но лучшее, что я мог получить, была ошибка времени выполнения ... Как это исправить?

Ответы [ 2 ]

7 голосов
/ 21 января 2011
rvC.report_memory()

следует заменить на

report_memory()

, поскольку это функция C.

1 голос
/ 21 января 2011

Если вы хотите использовать эту функцию в других модулях, вы должны также добавить в свой заголовочный файл (.h) эту строку

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