История изменений
Исправление
Moisha_Liberman,
(текущая версия)
:
Вы не дочитали до конца к сожалению. Я же чётко сказал что это не только блок кода, это ещё и вызовы этого блока кода именно как функции. Когда действует соглашение о вызовах. В данном случае макрос это просто макрос и не более.
Даже если мы оформим макрос как функцию, даже если такая псевдофункция будет иметь возвращаемое значение, один пень она останется макросом.
И, что самое главное, такая псевдофункция будет развёрнута в код на этапе работы препроцессора сишного компиля. Т.е., считайте на «нулевом этапе» работы компиля. Все остальные преобразования кода это потом.
Т.е., здесь из двух условий (блок кода и его вызов согласно соглашений о вызовах функций) невыполнено второе условие. Почему я и напирал именно на выполнение обоих условий.
P.S. И да, инлайнинговые ф-ии это тема отдельная. Просто потому, что инлайнинг не всегда выполняется. Это момент косвенно обсуждали где-то в другом треде.
Исходная версия
Moisha_Liberman,
:
Нет. Это не функция.
Вы не дочитали до конца к сожалению. Я же чётко сказал что это не только блок кода, это ещё и вызовы этого блока кода именно как функции. Когда действует соглашение о вызовах. В данном случае макрос это просто макрос и не более.
Даже если мы оформим макрос как функцию, даже если такая псевдофункция будет иметь возвращаемое значение, один пень она останется макросом.
И, что самое главное, такая псевдофункция будет развёрнута в код на этапе работы препроцессора сишного компиля. Т.е., считайте на «нулевом этапе» работы компиля. Все остальные преобразования кода это потом.
Т.е., здесь из двух условий (блок кода и его вызов согласно соглашений о вызовах функций) невыполнено второе условие. Почему я и напирал именно на выполнении обоих условий.