Доброе время суток, Charodey! inline-функция подобна макроподстановке, и соответственно экономит память.
Ответ отправлен: 28.10.2003, 15:26 Отправитель: Александр Отвечает Avl2k
Добрый день, Charodey! 1. Ничем. Второе объявление считается устаревшим. 2. inline - это указание компилятору, что хорошо бы вставить код данной функции по месту, а не вызывать ее с помощью call. Правда, компилятор может все равно поступить по-своему :) Использование inline-функций может существенно ускорять выполнение программы, правда, при этом увеличивается и ее объем. Раскрытие inline-функций должно быть разрешено соответствующей опцией компилятора. С уважением, Avl2k. Ответ отправлен: 28.10.2003, 13:13 Отправитель: Avl2k Отвечает Morgion
Доброе время суток, Charodey! 1) Первое объявление- нормальное объявление по стандарту C++ или новому стандарту C; Второе объявление- по старому стандарту C. Функционально ничем не отличаются. 2) inline-ф-я помещается в код при каждом её вызове (этим она похожа на дефайн, но без его недостатков). Это позволяет экономить скорость при обращении к классу. Но размер проги увеличивается. Ответ отправлен: 28.10.2003, 13:38 Отправитель: Morgion Отвечает vitya
Приветствую Вас, Charodey! Ничем, но второе является устаревшим объявлением функций в c. В C++ такие объявления вроде никогда даже и не использовались. Ответ отправлен: 28.10.2003, 13:07 Отправитель: vitya Отвечает BOLT
Приветствую Вас, Charodey! 1)Первое - реализация на C++, вторая на C. 2)Inline-функция компилятором вставляется в место ее вызова, т.е. это что-то типа #define для макроподстановки. По идее, если юзать inline-функции, то процессор не будет обращатся к стеку, тем самым уменьшая время выполнения программы. Но компиляторы предупреждают, что такой метод не желателен. Почему? Точно сказать не могу... может это как-то влияет на кэш процессора.
Snoop Dogg: Still Snoop Dogg and D-R-E (Guess who's back) Still, still doing that shit, right?
This message was created by EMan 1.5
Ответ отправлен: 31.10.2003, 13:07 Отправитель: BOLT Отвечает Andrew Vext
Приветствую Вас, Charodey! Первое объявление соответсвует принятому стандарту языка. Второе объявление - так объявлялись функции в ранних версиях компиляторов (до принятия стандарта). В принципе они ничем не отличаются (и большинство компиляторов проглотит и тот и другой вариант), но для первого варианта прототип функции должен быть int func(int, int) а для второго int func() Inline-функция подставляется в место вызова (т.е. ее код вставляется в вызывающую функцию). Отсутствуют команды вызова функции и возврата. Ответ отправлен: 28.10.2003, 13:19 Отправитель: Andrew Vext Отвечает Yuri Gordienko
Здравствуйте, Charodey! Второй вариант использовался в С-программах,- вопрос чисто стиля, т.е. на код никакого влияния нет. Что ты понимаешь под "на уровне памяти"? Тело функции, объявленной как inline на усмотрение компилятора может встраиваться в то место, откуда вызывается, т.е. не будет никаких эпилогов и т.п. В то же время инлайновая функция ничем не отличается от обычной по механизму использования, т.е. даже встроенная функция имеет адрес (и можно работать через этот адрес). Успехов Ответ отправлен: 28.10.2003, 12:46 Отправитель: Yuri Gordienko Отвечает chebv
Здравствуйте, Charodey! 1. Объявления функций равнозначны. Просто второй вариант является как бы "устаревшим". 2. При компиляции программы в том месте, где описан вызов Inline-функции, подставляется непосредственно код этой функции, что должно влиять в лучшую сторону на быстродействие программы. Но из-за этого размер программы увеличивается. Ответ отправлен: 28.10.2003, 17:49 Отправитель: chebv
Вопрос № 1198
люди, помогите!!!!надо сдавать уже прогу, а я не могу даже приступить...объясните мне пожалуйста: даются десять любых точек на плоскости - надо найти кол-во квадратов среди них.... я думаю так - но мне кажется неправильно - надо создать два массива для начала X и Y и занести в них соответственно координаты...затем открыть циклы по i и j и ...вот как дальше??? надо я так понимаю сравнить расстояния между четырьмя точками (их что по 4 брать??!!!как???) плюс надо узнать произведения соседних векторов (ну там их произведение равно нулю при угле в 90 градусов)... в общем я запуталась совсем, может я вообще неправильно думаю...подскажите идею... заранее спасибо....только ответ пришлите как можно быстрее - горит!!!!!!
Доброе время суток, Юлия! В приложении указано, как перебрать все точки. Внутри цикла нужно вызывать функцию, которая бы проверяла, образуют ли точки квадрат. Идея такая: 1)находим все расстояния между точками - это 6 значений. 2)Из них 4 значения должны быть равны (стороны квадрата), два (max) - диагонали - также равны. 3)Осталось только определить точки, расположенные по диагонали друг к другу. Это будут точки, между которыми расстояние максимальное. 4) Теперь, если выполняется условие (2), то это квадрат. Все.
Приложение: Ответ отправлен: 29.10.2003, 08:16 Отправитель: chebv
Форма отправки вопроса
Внимание!
Мы рекомендуем открывать рассылку в программе Internet Explorer 5.0+
или отправлять вопросы с сайта по адресу:
http://rusfaq.ru/cgi-bin/Message.cgi.