Выполнение cc -std = c99 example.c
на следующем упрощенном example.c
файл:
inline void a()
{
}
int main()
{
a();
return 0;
}
получает меня:
В функции `main ':
example.c :(. text + 0x7): неопределенная ссылка на 'a'
collect2: ld вернул 1 статус выхода
Насколько я понимаю, это связано с требованием стандарта C99 требовать еще одно определение для каждой встроенной нестатической функции, которая используется в тех случаях, когда тело не может быть встроено? Если это так, я предполагаю, что я мог бы использовать вместо этого static inline
, но я не хочу, чтобы это меня укусило позже, так что будет лучше всего здесь? Очевидно, я хочу придерживаться C99 и хочу встроить некоторые функции. (Да, я знаю, что компилятор обычно знает, что вставлять, даже не сообщая об этом, но у меня есть причины)