У меня странная проблема со встроенными функциями, определенными в разных файлах Рассмотрим следующий сценарий.
в main.c:
#include "inline.h"
int main(void) {
int i = 0;
for (i = 0; i<=100000; i++) {
omfg(i);
}
return 0;
}
inline.h:
inline int omfg(unsigned int num);
и inline.c:
#include <stdio.h>
inline int omfg(unsigned int num) {
int i = 0;
for (i = 0; i<= 10; i++) {
printf(".");
num++;
}
return num;
}
Когда я компилирую с gcc, используя нечто похожее на:
$ gcc inline.c main.c -o binary -Wall -Winline -Wextra -O2
Я получаю:
main.c: In function 'main':
inline.h:2: warning: inlining failed in call to 'omfg': function body not available
main.c:7: warning: called from here
Что я делаю не так? Должен ли я объявить omfg()
по-другому? Это довольно загадочно ...