Вопрос

Я запутался о том, как делать встроенные функции в C ++ ....

Позвольте сказать эта функция. Как было бы повернуться к встроенной функции

int maximum( int x, int y, int z )
{
   int max = x;
   if ( y > max )
      max = y;
   if ( z > max )
      max = z;
   return max;
}   
Это было полезно?

Решение

Как другие сказали, вы можете использовать inline Ключевое слово, чтобы сказать компилятору, вы хотите, чтобы ваша функция включена. Но inline Ключевое слово просто компилятор намекать. Отказ Компилятор может и решит игнорировать ваш запрос, если он хочет или должен.

Альтернативой состоит в том, чтобы сделать вашу функцию шаблона функции, который часто будет взорваться встроенной:

template<class Val>
Val maximum( Val x, Val y, Val z )
{
   Val max = x;
   if ( y > max )
      max = y;
   if ( z > max )
      max = z;
   return max;
}   

Другие советы

Для того, чтобы включить его в встроенную функцию, вам нужно сделать две вещи:

  1. Объявить его в соответствии с использованием ключевого слова inline.
  2. Убедитесь, что определение Из этой функции видны в каждом блоке перевода, где он используется. Это нормально означает, что вы должны поместить все определение функции в заголовочный файл.

Чтобы опубликовать NEILS, ответ как актуальный ответ:

inline int maximum(int x, int y, int z)
....

Если это определение функции появляется внутри class {} Определение, то он уже автоматически встроен.

В противном случае, как говорят другие, положите inline спереди.

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

inline int maximum( int x, int y, int z ) // note the inline keyword
{
   int max = x;
   if ( y > max )
      max = y;
   if ( z > max )
      max = z;
   return max;
}

Если функция является членом класса / структуры, просто определяя его внутри класса (как его нанесено на нее) делает его встроенным.

Скажи, что у вас есть звонок:

int f = maximum(3, 4, 5)

Компилятор может расширить звонок к чему-то вроде:

int max = x;
if ( y > max )
   max = y;
if ( z > max )
   max = z;
int z = max;

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

Вы можете прочитать больше о встроенных функциях и как (и когда) использовать их в C ++ FAQ Lite и это Достигаться

inline Просто говорит компилятору, что вы хотите, чтобы код функции скопирован везде, который он является реферингом, он делает код немного быстрее (никаких функций накладных накладных), но больше (код копируется). Эта страница более глубокая.

Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top