[Эти] функции очень малы, и я хотел бы их встроить.[Но] я не хочу перекомпилировать все при каждом изменении.
Вы не можете иметь обе эти вещи.Если функция является встроенной, то у вас нет выбора , кроме как перекомпилировать все вызывающие при ее изменении.Вот как работает встраивание.Даже если бы вы использовали оптимизатор времени соединения, чтобы сделать это автоматически во время соединения, вы все равно заплатили бы за время компиляции обработки всех вызывающих программ.
AFAIK, ни gcc 4.6, ни clang 3 не имеют времени соединениямежду прочим, оптимизаторы, которые до нуля.
Редакция в стороне: Ни один из известных мне компиляторов не обладает достаточной эвристикой, чтобы сделать ненужными ручные аннотации inline
.Даже VS2010, который я упомянул в комментариях в качестве примера оптимизатора времени соединения, который является с нуля, все еще нуждается в небольшом совете о том, что встроить.