Inline и define

duran_duran

Почему использовать inline-функции лучше, чем использовать команду препроцессора #define? Смысл в том, что лучше лишний раз не трогать препроцессор?
3 ответа

duran_duran

Почему использовать inline-функции лучше, чем использовать команду препроцессора #define? Смысл в том, что лучше лишний раз не трогать препроцессор?
Смысл в том, что inline - это средство языка С++, а функции препроцессора - это пережитки Си. + препроцессор небезопасен в плане побочных эффектов, если ему в качестве параметров будут передаваться не атомарные выражения, например, variable++ И вообще, сами поразмыслите - препроцессор это текстовая макро-замена, в то время как функция - это полнофункциональный (сорри за тавтологию) элемент языка.


duran_duran

Почему использовать inline-функции лучше, чем использовать команду препроцессора #define?
А кто сказал, что лучше ? Всяк метод хорош бывает в определенных обстоятельствах. Вот BOOST_SCOPE_EXIT возьмите, к примеру. Сможете сделать лучше на inline-функциях ?http://www.boost.org/doc/libs/1_50_0...COPE_EXIT.html


duran_duran

Почему использовать inline-функции лучше, чем использовать команду препроцессора #define?
можно и подобие шаблонов на препроцессоре настряпать, но нужно ли это делать, если шаблоны сами по себе имеются в языке. Если есть возможность заменить макрос на встраиваемую функцию, то имхо, лучше заменить. Да и ошибки искать в функции намного проще чем в макросе.