Насколько мне известно, inline
функции в C работают почти так же, как и в C++ при использовании в одной единице перевода, и в таком случае нет необходимости углубляться в extern inline
трудности. Однако следующая программа, включающая три файла, кажется, не компилируется в C, и я изо всех сил пытаюсь понять, почему.
f.h
int f();
inline int g();
f.c
#include "f.h"
inline int g() {
return 5;
}
int f() {
return 3 + g();
}
main.c
#include "f.h"
#include <stdio.h>
int main() {
printf("%d", f());
return 0;
}
Линкер
сообщает, что существует неопределенная ссылка на g
. Однако, поскольку g
используется только в файле f.c, я не могу определить, в чем именно заключается проблема.
extern inline int g();
в одной единице перевода, в формате ISO C - person M.M   schedule 26.12.2019