Как сделать функцию встроенной в C ++ - PullRequest
0 голосов
/ 11 июня 2019

Чтобы сделать функцию встроенной, следует добавить ключевое слово inline в прототипе функции или в определении функции или добавить ключевое слово inline как в объявлении функции, так и в определении функции.

Ответы [ 2 ]

5 голосов
/ 11 июня 2019

Если у вас уже есть объявление и определение, вам не нужно никуда добавлять inline. Ключевое слово inline - не магическое заклинание оптимизации, а скорее спецификатор связи.

Встроенная функция должна быть определена в каждой единице перевода, в которой она используется. Как ее можно определить там? Просто, это помещено в заголовок:

// foo.h
inline void foo() {}

Но подождите, я слышал, вы говорите, не приведет ли это к тому, что заголовок будет причиной ошибки в нескольких определениях? Не тогда, когда он помечен как встроенный, поэтому я назвал его скорее спецификатором связи. Встроенный спецификатор сообщает компилятору, что все те множественные определения, которые он видит, одинаковы. Так что на самом деле он может использовать любой из них. Или же он может проверить тело функции и выбрать встраивание кода, но это не обязательно.

Основная цель ключевого слова состоит в том, чтобы эти множественные определения выглядели встроенными, а не для того, чтобы код функции был встроенным. Итак, еще раз, если у вас есть определение в файле cpp и объявление в заголовке, вам не нужно ничего делать. Если у вас есть утилита, которую вы хотите отобразить в заголовке, поместите ее туда - определение и все - и добавьте ключевое слово inline.

3 голосов
/ 11 июня 2019

Как сделать функцию встроенной:

Чтобы сделать любую функцию встроенной, начните ее определения с ключевого слова «inline».

Из статьи .

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...