Вградени функции (вградени функции) до с, purecodecpp

Измерена философски - размера на код, за да вградите функцията увеличава. Вместо един ред функция наричаме тялото й заместените вместо обаждане. Той даде толкова, колкото шест реда. Така ще бъде и в компилиран програма - брой оператори ще се увеличи много пъти - с толкова, колкото оператори в тялото на функция, както и колко време е влязла в програмата.

Т.е. разликата между инлайн функция и нормална функция - дублиране на функцията код друг орган, когато той участва. При нормална функция, тялото му е в един екземпляр, на същото място в рамките на програмата.

Къде е ползата тук ще попитате вие? Запазване на времето за обработка за скачане на разговор в функциите на тялото. Ако функцията е огромен, и се използва на няколко места, а след това да вгражда се оказва, не е напълно полезно. Въпреки това, ако функцията (тялото си) е малък, с минимален брой оператори за решаване на проблемите в старите дни е по-лесно да се откажат от скока и просто да ги замени на правилното място, тъй като програмист ги описва там.

Каквото и да е, в условията на живот и дори на съвременните компютри, програми, които използват функцията за инлайн вместо обаждане тялото на смяна, без особени ползи. Затова използвайте този тип функция е необходимо много често. IMHO, тя е в славата на музея. Въпреки, че трябва да бъда честен, този подход дава плодове за тези, които се програмира контролери, процесори, както и друга част от желязо. Но има своите особености и собствен подход и отиде в които сега не си заслужава. Използвайте вградената функция (инлайн функция), или не - това е до програмиста. От себе си мога да добавя само едно нещо - не го направи там, където не се изисква за тази работа.

Olej.

> Следователно, за да използвате този тип функция е необходимо много често.

Използване на вградени функции очевидно трябва да се използват, може би не толкова често. Но те са масово използвани имплицитно при определяне на класовете и се създават обекти:
- всеки метод функция, дефиницията на MDM е в рамките на определението за своя клас, получава класиралият се имплицитно в текста.

В пример клас определяне 2D-точка (в равнината):

Olej.

Друг "подробност": функции с вградени квалификант работи добре, но толкова дълго, колкото определението на функцията и на призива са в един и същи файл с код. С развитието на проекта, е необходимо да се раздели код в множество файлове (отделен kompilyaiya с последващо свързване на обектните файлове), и това ще създаде огромни проблеми с намирането на грешки: вградени функции не са подходящи за външно свързване.

Пътека - е детерминантата на макро, и те не са подходящи за външно свързване (свързване).

Olej.

> Този тип функции в действителност се използва не само в C, а по това време, оправдаваше себе си елегантен.

В стандарта за C език, няма дума в текста, където такива неща се продават чрез зададат параметрите на #define макроси.
Някои компилатори C инлайн по-късно, но само за pdderzhaniya sovmestimsoti с C ++.
Ето защо, по принцип погрешно да се каже, че в текста е заимстван от С това - чист C ++ придобиване.
Затова бих тук е "шумен" старт на изтласкване.

И аз не съм намеквайки за стандарта. Аз намекна HLL. Паскал също такива функции там. И в BASIC изглежда, че са били нещо като, че в по-късните си възгледи.

Olej.

> Този тип функции в действителност се използва не само в C

Olej.

По въпроса за съвместимостта на C и C ++ ... по отношение на инлайн:

Olej.

Когато аз го написах, аз не искам да навлизам в конкретни детайли, така че да не пречат същността им. Нищо чудно, че в интернет е обикновено "mnogabukaf", който често се надува съдържание в маруля О-Livyo.