Подтвердить что ты не робот

Не удалось использовать inline в объявлении получить ошибку C2054

Я пытаюсь скомпилировать некоторые проекты с открытым исходным кодом, используя компилятор vs2013 c/С++. Файл имеет расширение .c. Код ниже возвращает некоторые ошибки (ниже). Все они могут быть "исправлены", просто удалив inline в декларации. Примечание: не реальная функция, просто иллюстративная

static inline int pthread_fetch_and_add(int *val, int add, int *mutex)
{
    return 0;
}

ошибки ошибка C2054: ожидается '(' следовать 'inline' ошибка C2085: 'pthread_fetch_and_add': не в списке официальных параметров ошибка C2143: синтаксическая ошибка: отсутствует ';' до '{'

4b9b3361

Ответ 1

Используйте __inline с MSVC.

inline - это ключевое слово c99, а c99 еще не (полностью) поддерживается с помощью MSVC.

"Ключевое слово inline доступно только в С++. Ключевые слова __inline и __forceinline доступны как на C, так и на С++. Для совместимости с предыдущими версиями _inline является синонимом __inline."

Источник: http://msdn.microsoft.com/en-us/library/z8y1yy88.aspx

Ответ 2

Простым обходным решением является -Dinline = __ inline с компилятором MSVC.

Ответ 3

Я столкнулся с той же проблемой. Вместо того чтобы менять каждый inline на __inline, перед всеми объявлениями функций я добавил следующее:

#if defined(_MSC_VER)
#define inline __inline
#endif

Это позволит исходному коду все еще компилироваться как есть с другим компилятором (предположительно не имеющим тех же ограничений, что и VS).