169 похожих чатов

1) Читабельность 2) SLINE и SRES, лучше через функции использовать Вопрос: В

каких случаях тогда лучше использовать макросы как функции ?

7 ответов

27 просмотров

Если технически возможно реализовать поведение в виде функции, надо писать функции

ㅤ- Автор вопроса

Человек выше неправ, во-первых макросы стоит использовать, когда ты хочешь, чтобы твоя функция была гарантированно inline, однако это не всегда оправданно и может привести ухудшению производительности программы, во-вторых когда ты хочешь сделать что-то специфичное - например "перегрузку" через дженерик макрос, нагенерить обычные функции или сделать функцию со всеми вариадик аргументами.

Не спорю по поводу гарантированного inline или _Generic, но это как раз то, что нельзя реализовать на обычных функциях.) Мой посыл был как раз в том, что если можно сделать на обычных функциях, то так и стоит делать.

multi processing
Не спорю по поводу гарантированного inline или _Ge...

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

Денис Rabbit
Ну вот смотри, возьмёт простенькую функцию нахожде...

Такие функции, как правило же инлайнятся компилятором? Вроде как в современном мире считается нормальным тоном доверять такую работу оптимизаторам, а не думать за него

multi processing
Такие функции, как правило же инлайнятся компилято...

Тут всё зависит от того, с какими флагами оптимизации собирать

Похожие вопросы

Обсуждают сегодня

а через ESC-код ?
Alexey Kulakov
29
30500 за редактор? )
Владимир
47
Чёт не понял, я ж правильной функцией воспользовался чтобы вывести отладочную информацию? но что-то она не ловится
notme
18
У меня есть функция где происходит это: write_bit(buffer, 1); write_bit(buffer, 0); write_bit(buffer, 1); write_bit(buffer, 1); write_bit(buffer, 1); w...
~
13
Недавно Google Project Zero нашёл багу в SQLite с помощью LLM, о чём достаточно было шумно в определённых интернетах, которые сопровождались рассказами, что скоро всех "ибешни...
Alex Sherbakov
5
Как передать управляющий символ в открытую через CreateProcess консоль? Собсна, есть процедура: procedure TRedirectThread.WriteData(Data: OEMString); var Written: Cardinal;...
Serjone
6
в JclConsole объявлено так: function CtrlHandler(CtrlType: DWORD): BOOL; stdcall; - где ваше объявление с stdcall? у вас на картинке нет stdcall
Karagy
8
Ребят в СИ можно реализовать ООП?
Николай
33
program test; {$mode delphi} procedure proc(v: int32); overload; begin end; procedure proc(v: int64); overload; begin end; var x: uint64; begin proc(x); end. Уж не знаю...
notme
6
https://github.com/erlang/otp/blob/OTP-27.1/lib/kernel/src/logger_h_common.erl#L174 https://github.com/erlang/otp/blob/OTP-27.1/lib/kernel/src/logger_olp.erl#L76 15 лет назад...
Maksim Lapshin
20
Карта сайта