Изучаем С++ создавая игры в ue4 Уилльям Шериф Изучайте программирование С++ с интересным применением реально мира, что позволит вам создавать ваши собственные игры!


Совет  –  примените  встроенные  функции  вместо



Pdf көрінісі
бет111/252
Дата06.01.2022
өлшемі12,25 Mb.
#11940
1   ...   107   108   109   110   111   112   113   114   ...   252
Байланысты:
аа

Совет  –  примените  встроенные  функции  вместо 
макросов с аргументами 
Вы  должны  знать  как  работают  макросы  с  аргументами,  потому  что  вы  будете 
часто  встречать  их  в  коде  С++.  Тем  не  менее,  когда  возможно,  многие  С++ 
программисты  предпочитают  использовать  встроенные  функции  нежели  макросы 
с аргументами. 
Обычные  функции  вызывают  выполнение,  включающее  инструкцию  перехода  к 
функции и затем выполнение функции. Встроенная функция  – это та функция, чьи 
строки скопированы в место вызова и никакой переход не требуется. Применение 
встроенных функций обычно имеет смысл для очень маленьких, простых функций, 
которые  имеют  не  большое  количество  строк.  Например,  мы  можем  встроить 
простую функцию max, которая находит большее из двух значений: 
inline int max( int a, int b ) 

if( a > b ) return a; 
else return b; 
}
 
Везде где пользуется эта функция max,  код для тела функции будет скопирован и 
вставлен в место вызова функции. Когда не нужен переход к функции, экономится 
время  выполнения,  что  делает  встроенные  функции  эффективными  подобно 
макросам. 
Есть  ухищрение  по  использованию  встроенных  функций.  Встроенные  функции 
должны  иметь  своё  собственное  тело,  полностью  содержащееся  в  заголовочном 
файле  .h.  Так  компилятор  может  производить  оптимизацию  и  собственно 
встраивать  функцию  туда,  где  она  используется.  Функции  делаются  встроенными 
типично  ради  скорости  (поскольку  вам  не  надо  переходить  к  другому  телу  кода, 
чтобы выполнить функцию), но ценой разрастания кода.       
Вот причины, по которым встроенные функции предпочтительнее макросов: 
1.  Макросы предрасположены к ошибкам: не обозначен аргумент макроса. 
2.  Макрос  должны  быть  написаны  на  одной  строке,  иначе  вы  увидите  их  с 
применением символов перевода на новую строку: 
\  
знаки перехода строки \ 
как эти \ 
усложняют чтение 
3.  Если  макрос  написан  не  внимательно,  это  послужит  сложной  для 
исправления  ошибкой  компилятора.  Например,  если  вы  не  правильно 
поместили в скобки ваш аргумент, то ваш код просто будет не верным.  


105 | 
С т р а н и ц а
 
 
4.  Большой макрос трудно отлаживать.  
Следует  сказать,  что  макросы  позволяют  вам  выполнять  некоторую  магию 
компилятора 
препроцессоров. 
UE4 
предпринимает 
много 
действий 
с 
использованием макросов с аргументами, что вы увидите далее.   
Выводы 
Вызов  функции  позволяет  вам  повторно  использовать  основной  код.  Повторное 
использование  кода  важно  по  ряду  причин.  В  основном,  потому  что 
программирование  само  по  себе  итак  является  сложным  и  нужно  избегать 
насколько  возможно,  повторного  выполнения  одной  и  той  же  сложной  работы. 
Усилия  программиста,  который  написал  функцию  sqrt(),  не  должны  повторяться 
другими программистами, которые хотят решить ту же проблему. 


Достарыңызбен бөлісу:
1   ...   107   108   109   110   111   112   113   114   ...   252




©emirsaba.org 2024
әкімшілігінің қараңыз

    Басты бет