Я могу думать только о применении этого, однако я никогда не видел его в использовании.
Примером может быть сокрытие имени реализации.Представьте, что у вас есть библиотечная функция, и эта функция должна быть встроенной, поэтому вы предоставляете ее реализацию в заголовочном файле.Также необходимо вызвать другие функции.Таким образом, ваш заголовочный файл библиотеки (library.h
) может выглядеть так:
inline int do_stuff() {
int a = do_internal_stuff1(10, 15, 25);
int b = do_internal_stuff2(10, 15, 25);
return a + b;
}
Чтобы это работало, объявление функций do_internal_stuff
должно быть видимым, так что вы в конечном итоге включите internal_stuff.h
, который объявляет эти две функции.Но теперь они могут вызываться в любом файле, который включает library.h
, и вы, возможно, этого не захотите.
Одной из причин, по которой стоит не включать internal_stuff.h
, будет локальное удаление функций:
inline int do_stuff() {
int do_internal_stuff1(int, int, int);
int do_internal_stuff2(int, int, int);
int a = do_internal_stuff1(10, 15, 25);
int b = do_internal_stuff2(10, 15, 25);
return a + b;
}
Если у вас есть 20 do_internal_stuff
функций, это может стать немного утомительным.Чем вы, возможно, захотите
inline int do_stuff() {
typedef int internal_func(int, int, int);
internal_func do_internal_stuff1, do_internal_stuff2, ...;
int a = do_internal_stuff1(10, 15, 25);
int b = do_internal_stuff2(10, 15, 25);
return a + b;
}
Пожалуйста, обратите внимание, я не поддерживаю какой-либо код, подобный этому.Я просто играю адвоката дьяволов, чтобы ответить на вопрос зачем это делать .