Я пытаюсь заменить некоторые макро-подпрограммы встроенными функциями, чтобы компилятор мог их оптимизировать, чтобы отладчик мог перейти к ним, и т.д. Если я определяю их как обычные функции, это работает:
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?)