Цитата(Метценгерштейн @ Jun 23 2015, 00:57)

и как это мне поможет? Не совсем просто понятно.
Что у меня не так с определением ф-ии?
Дело в том, что в си используется раздельная компиляция. То есть, каждый *.c файл компилируется отдельно от других.
Теперь смотрите: вы поместили объявление инлайн-функции в файл inline.h:
Код
inline int myInlineFunction();
, а определение инлайн-функции в файл inline.cpp:
Код
inline int myInlineFunction(){
return 42;
}
Теперь вы хотите использовать эту функцию в файле main.c. Вы пишете:
Код
#include "inline.h"
void main()
{
i = myInlineFunction();
}
Компилятор компилирует файл main.c. Напомню, компиляция раздельная, то есть, компилятор видит только текущую единицу компиляции. Он видит main.c, он видит включаемый файл inline.h, но не видит файла inline.c. Он хочет подставить встраиваемую функцию, но не видит её тела, а видит только её объявление, расположенное в файле inline.h. Вот и получается ошибка.
Поэтому для встраиваемых функций приходится помещать определение функции в *.h файл. Файл inline.h:
Код
inline int myInlineFunction(){
return 42;
}
Теперь компиляция main.c пройдёт нормально. Но если мы захотим использовать эту функцию в ещё одном файле, скажем, foo.c, то на этапе линковки возникнет ошибка, потому что модули main и foo будут содержать функцию myInlineFunction(). Для решения этой проблемы надо сделать myInlineFunction() статической:
Код
static inline int myInlineFunction(){
return 42;
}
Вот теперь всё будет нормально.