2013-05-13 8 views
0

Я программировал с онлайн-компилятором mbed, но теперь мне нужна поддержка отладки, а вчера вечером я экспортировал в uVision 4. Похоже, что я компилирую официальные библиотеки.Экспорт приложения mbed в uVision

mbed/KL25Z/gpio_object.h (33): предупреждение: # 260-D: явный тип Иссингом ("Int" предполагается)
mbed/KL25Z/gpio_object.h (33): Ошибка: # 65: ожидается a ";"

Этот код тот же на других платформах. Код в строке 33 выглядит следующим образом ...

static inline void gpio_write(gpio_t *obj, int value) { 
    if (value) 
     *obj->reg_set = obj->mask; 
    else 
     *obj->reg_clr = obj->mask; 
} 

Я попытался окружающим если-то еще с фигурными скобками и это не сработало, так что теперь я не знаю, что делать ...

ответ

4

По умолчанию компиляция C - это ISO C90, где ключевое слово inline недопустимо. Используйте либо:

  • расширение __inline C90,
  • C++ компиляция или
  • C99 сборник.

Без любого из них компилятор C90 анализирует код как объявление статической переменной, называемой «inline», без явного типа и отсутствующей точки с запятой.

+0

Я новичок в uVision, где я могу изменить его на C99 или C++? –

+0

K, поэтому я попробовал как c99, так и cpp, и они дали мне массу ошибок. Кажется, что он распознает -inline, но все равно дает мне ту же ошибку ... –

+0

Это '__inline' не' --inline', заменяющее ключевое слово 'inline' в коде, а не командной строке (просто чтобы быть ясным). Более того, 'static' и' __inline' вместе не имеют смысла - удалите 'static' (или' inline' - в любом случае один или другой не оба). Если вы получаете ошибки с компиляцией на C++ или C99, задайте другой вопрос, если это вас беспокоит - это может указывать на другие проблемы. – Clifford