Форум программистов, компьютерный форум CyberForum.ru

С++ для начинающих

Войти
Регистрация
Восстановить пароль
 
duran_duran
1 / 1 / 0
Регистрация: 11.01.2014
Сообщений: 20
#1

inline и define - C++

18.01.2014, 22:43. Просмотров 427. Ответов 3
Метки нет (Все метки)

Почему использовать inline-функции лучше, чем использовать команду
препроцессора #define? Смысл в том, что лучше лишний раз не трогать препроцессор?
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
18.01.2014, 22:43
Здравствуйте! Я подобрал для вас темы с ответами на вопрос inline и define (C++):

#define VS inline - C++
Что работает быстрее: #define SQR(x) x*x void Func() { for(int i = 0; i < 10; ++i) { cout << SQR(i) << endl; ...

Как влияет inline и обертка(#ifndef #define #endif) .h файла на компоновщик. - C++
Есть файл Point.h: #ifndef POINT_GUARD #define POINT_GUARD ...

Inline функции - на сколько должна быть маленькая функция, чтоб она подошла под inline? - C++
Здравствуйте. Знаю теорию, но не понимаю, на сколько должна быть маленькая функция, чтоб она подошла под inline ? Как...

inline функции vs инструкции inline функций - C++
Здравствуйте. Чтобы не писать повторно код, нужно использовать функции. Но если функции компактные, то их лучше делать inline функциями, т....

define - C++
Всем здрасьте , что означает эта строчка? #define MAX(a,b) a>b? a:b

#define c :: - C++
Подскажите как реализовать такую замену: #define sa2::sys::getClientKernel()->getXDBTManager() cls_SimpleXDBTManager::Instance() ...

Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
gromo
370 / 269 / 24
Регистрация: 04.09.2009
Сообщений: 1,214
18.01.2014, 23:01 #2
Цитата Сообщение от duran_duran Посмотреть сообщение
Почему использовать inline-функции лучше, чем использовать команду
препроцессора #define? Смысл в том, что лучше лишний раз не трогать препроцессор?
Смысл в том, что inline - это средство языка С++, а функции препроцессора - это пережитки Си.
+ препроцессор небезопасен в плане побочных эффектов, если ему в качестве параметров будут передаваться не атомарные выражения, например, variable++
И вообще, сами поразмыслите - препроцессор это текстовая макро-замена, в то время как функция - это полнофункциональный (сорри за тавтологию) элемент языка.
Убежденный
Системный программист
Эксперт С++
15517 / 7015 / 1110
Регистрация: 02.05.2013
Сообщений: 11,452
Завершенные тесты: 1
18.01.2014, 23:08 #3
Цитата Сообщение от duran_duran Посмотреть сообщение
Почему использовать inline-функции лучше, чем использовать команду
препроцессора #define?
А кто сказал, что лучше ?
Всяк метод хорош бывает в определенных обстоятельствах.
Вот BOOST_SCOPE_EXIT возьмите, к примеру. Сможете сделать
лучше на inline-функциях ?

http://www.boost.org/doc/libs/1_50_0...COPE_EXIT.html
Croessmah
Модератор
Эксперт CЭксперт С++
13154 / 7417 / 831
Регистрация: 27.09.2012
Сообщений: 18,254
Записей в блоге: 3
Завершенные тесты: 1
19.01.2014, 09:34 #4
Цитата Сообщение от duran_duran Посмотреть сообщение
Почему использовать inline-функции лучше, чем использовать команду
препроцессора #define?
можно и подобие шаблонов на препроцессоре настряпать, но нужно ли это делать, если шаблоны сами по себе имеются в языке.
Если есть возможность заменить макрос на встраиваемую функцию, то имхо, лучше заменить.
Да и ошибки искать в функции намного проще чем в макросе.
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
19.01.2014, 09:34
Привет! Вот еще темы с ответами:

define не - C++
Здравствуйте. "Дефайню" "%f" для вывода: #define fss "%f"; . И потом делаю вывод вот такой вот: for(i=0;i<n;i++) fscanf(in,fss,&a->di);. И...

#define - C++
#define зачем нужна это заголовочный файл какие у него функции и как им ползоватса?

#define - C++
Здравствуйте, дорогие программисты! сразу хочу сказать, что в С++ я совсем недавно, поэтому толком ничего не знаю Во-первых,...

c++11 и $define - C++
Есть код который прекрасно компилируется без -std=c++11, но как только я включаю эту опцию то константы препроцессора не заменяются и...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
Yandex
Объявления
19.01.2014, 09:34
Ответ Создать тему
Опции темы

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2017, vBulletin Solutions, Inc.
Рейтинг@Mail.ru