каких случаях тогда лучше использовать макросы как функции ?
Если технически возможно реализовать поведение в виде функции, надо писать функции
Таким образом я оптимизирую программу ?
Человек выше неправ, во-первых макросы стоит использовать, когда ты хочешь, чтобы твоя функция была гарантированно inline, однако это не всегда оправданно и может привести ухудшению производительности программы, во-вторых когда ты хочешь сделать что-то специфичное - например "перегрузку" через дженерик макрос, нагенерить обычные функции или сделать функцию со всеми вариадик аргументами.
Не спорю по поводу гарантированного inline или _Generic, но это как раз то, что нельзя реализовать на обычных функциях.) Мой посыл был как раз в том, что если можно сделать на обычных функциях, то так и стоит делать.
Ну вот смотри, возьмёт простенькую функцию нахождения максимума из двух чисел - вот её, к примеру стоит реализовать через макрос, т.к. тупо вызов этой функции займет больше времени, нежели вычисление её результата.
Такие функции, как правило же инлайнятся компилятором? Вроде как в современном мире считается нормальным тоном доверять такую работу оптимизаторам, а не думать за него
Тут всё зависит от того, с какими флагами оптимизации собирать
Обсуждают сегодня