// Macros.cpp : Этот файл содержит функцию "main". Здесь начинается и заканчивается выполнение программы.
//

#include <iostream>

#define PI 3.14f;
#define CIRCLE_AREA1(r) r * r * PI;
#define CIRCLE_AREA2(r) (r) * (r) * PI;
#define RECTANGLE_AREA(a, b) a = a * b;

bool TMin(int a, int b) {
    return a < b;
}

bool TMax(int a, int b) {
    return a > b;
}

int main()
{
    std::cout << PI;
    std::cout << "\n";

    float x = 5;
    std::cout << CIRCLE_AREA1(x);
    std::cout << "\n";
    std::cout << CIRCLE_AREA2(x);
    std::cout << "\n";
    int a = 7;
    int b = 2;
    std::cout << CIRCLE_AREA1(a + b);
    std::cout << "\n";
    std::cout << CIRCLE_AREA2(a + b);
    std::cout << "\n";

    RECTANGLE_AREA(a, b);

    std::cout << a << "\n";

    #define PRT(s) std::cout << s << "\n";
    PRT(a);

    #define CALL(x, a, b) T##x##(a, b)

    PRT(CALL(Min, 20, 30));
    PRT(CALL(Max, 20, 30));
}

// Запуск программы: CTRL+F5 или меню "Отладка" > "Запуск без отладки"
// Отладка программы: F5 или меню "Отладка" > "Запустить отладку"

// Советы по началу работы 
//   1. В окне обозревателя решений можно добавлять файлы и управлять ими.
//   2. В окне Team Explorer можно подключиться к системе управления версиями.
//   3. В окне "Выходные данные" можно просматривать выходные данные сборки и другие сообщения.
//   4. В окне "Список ошибок" можно просматривать ошибки.
//   5. Последовательно выберите пункты меню "Проект" > "Добавить новый элемент", чтобы создать файлы кода, или "Проект" > "Добавить существующий элемент", чтобы добавить в проект существующие файлы кода.
//   6. Чтобы снова открыть этот проект позже, выберите пункты меню "Файл" > "Открыть" > "Проект" и выберите SLN-файл.
