Встроенные функции C и ошибка «undefined external»

Я пытаюсь заменить некоторые макро-подпрограммы встроенными функциями, чтобы компилятор мог их оптимизировать, чтобы отладчик мог перейти к ним, и т.д. Если я определяю их как обычные функции, это работает:

void do_something(void)
{
  blah;
}

void main(void)
{
  do_something();
}

, но если я определяю их как встроенные:

inline void do_something(void)
{
  blah;
}

void main(void)
{
  do_something();
}

, появляется сообщение «Ошибка: неопределенное внешнее». Что это обозначает? Сделав удар в темноте, я попробовал

static inline void do_something(void)
{
  blah;
}

void main(void)
{
  do_something();
}

и больше никаких ошибок. Определение функции и вызов функции находятся в одном и том же файле .c.

Может ли кто-нибудь объяснить, почему один работает, а другой нет?

(Второй связанный вопрос: куда мне поместить встроенные функции, если я хочу использовать их более чем в одном файле .c?)

6
задан endolith 22 February 2012 в 17:22
поделиться