Претоварване на функции в C

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

От това нововъведение C 11, необходимостта от по-нова версия на компилатора, който поддържа стандарта. Например използването на ССЗ версия 5.3.0 с флага -std = C11. На Windows без никакви проблеми сложи MinGW пакет, който включва всички необходими инструменти.

Помислете за един прост пример: функцията връща аргумента премина плюс един. На първо място, ние определяме всички функции, които могат да се извършват с всички видове аргументи, които трябва

На следващо място, на макроса

Тази система е подобна на отчета за ключ. Вместо Foo се замества една от функциите, а след това (X) - предизвикателство за този аргумент. Стойността по подразбиране - при вида не може да се определи. Ако видът не е дефинирано и няма стойност по подразбиране, или не може да се използва от функцията по подразбиране, това е грешка. Ето една програма

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

Разбира се, можете да вместо три макроси да се съчетаят в едно

Ето още един пример: макрос, който показва името на вида предадения й

Имайте предвид, важна характеристика - без изрично "а" ще се третира като междинно, канапи и приспособим, въпреки че опитът да го промените ще доведе до грешка. За точна opredeleniyatipa това очевидно може да доведе

Типът може да бъде аргумент макро

RU-Cyrl 18- Упътване Sypachev S.S. 1989-04-14 [email protected] Степан Sypachev студенти