Как правильно встроить и использовать встроенную функцию в C99, исправляя сбой ссылки?

Выполнение 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 и хочу встроить некоторые функции. (Да, я знаю, что компилятор обычно знает, что вставлять, даже не сообщая об этом, но у меня есть причины)

7
задан amn 1 October 2019 в 12:42
поделиться