для многих быстрых задач, где можно использовать функцию f(x,y)
, в простом C используются макросы. Я хотел бы спросить конкретно об этих случаях, которые разрешаются вызовом функции (т. Е. Макросы, используемые для встраивания функций, а не для расширения кода произвольного кода).
Обычно функции C не являются встроенными, поскольку они могут быть связаны с другими файлами C. Однако статические функции C видны только из файла C, в котором они определены. Поэтому они могут быть встроены компиляторами. Я слышал, что многие макросы следует заменить, превратив их в статические функции, потому что это создает более безопасный код.
Есть ли случаи, когда это не очень хорошая идея?
Опять же: не спрашивать о макросах Code-Production с ## одинаковыми конструкциями, которые вообще не могут быть выражены как функция.
inline
функции гарантируют, что он может быть определен несколько раз в двоичном файле, компилятор может решить, будет ли он фактически встроен в него, возможно, для экономии места
inline
, это не о C ++.
inline
в C, по крайней мере, с C99. Для быстрого обзора см. Википедию по встроенным функциям .