Step 8 (S-39606)

From Stepik Wiki
Jump to: navigation, search

Step on Stepik: https://stepik.org/lesson/13377/step/8

Из лекции вы узнали, что использование макросов вместо функций — это зло. Для того, чтобы лучше разобраться, почему так непросто написать хороший макрос, и почему макросы лучше не использовать, мы предлагаем вам самостоятельно реализовать такую функцию-макрос.

Реализуйте макрос MAX от трёх параметров, который присваивает целочисленной (int) переменной, переданной в качестве третьего аргумента, наибольшее из значений, переданных в первых двух аргументах. Пример вызова макроса:


int a = 10;
int b = 20;
int c = 0;
MAX(a, b, c); // теперь c равно 20
MAX(a += b, b, c); // теперь a = с = 30


При написании макроса постарайтесь учесть как можно больше вариантов его использования.

Требования к реализации: вам нужно реализовать только макрос MAX. Функцию main и какие-либо другие функции реализовывать не нужно. Попробуйте решить эту задачу исключительно средствами макросов. 

Подсказка: возможно вам потребуется какая-нибудь синтаксическая конструкция для объединения нескольких инструкций.  Помните, что макросы просто подставляют текст в место вызова, препроцессор ничего не знает про синтаксис C++. Напишите макрос так, чтобы при его подстановке в месте вызова получился корректный код. Проверьте, что Ваш код можно применить несколько раз в одной функции и это не вызовет ошибку. Если будете определять какие-нибудь переменные, то постарайтесь сделать так, чтобы они не влияли на внешний код.