LINUX.ORG.RU

История изменений

Исправление Moisha_Liberman, (текущая версия) :

Вы не дочитали до конца к сожалению. Я же чётко сказал что это не только блок кода, это ещё и вызовы этого блока кода именно как функции. Когда действует соглашение о вызовах. В данном случае макрос это просто макрос и не более.

Даже если мы оформим макрос как функцию, даже если такая псевдофункция будет иметь возвращаемое значение, один пень она останется макросом.

И, что самое главное, такая псевдофункция будет развёрнута в код на этапе работы препроцессора сишного компиля. Т.е., считайте на «нулевом этапе» работы компиля. Все остальные преобразования кода это потом.

Т.е., здесь из двух условий (блок кода и его вызов согласно соглашений о вызовах функций) невыполнено второе условие. Почему я и напирал именно на выполнение обоих условий.

P.S. И да, инлайнинговые ф-ии это тема отдельная. Просто потому, что инлайнинг не всегда выполняется. Это момент косвенно обсуждали где-то в другом треде.

Исходная версия Moisha_Liberman, :

Нет. Это не функция.

Вы не дочитали до конца к сожалению. Я же чётко сказал что это не только блок кода, это ещё и вызовы этого блока кода именно как функции. Когда действует соглашение о вызовах. В данном случае макрос это просто макрос и не более.

Даже если мы оформим макрос как функцию, даже если такая псевдофункция будет иметь возвращаемое значение, один пень она останется макросом.

И, что самое главное, такая псевдофункция будет развёрнута в код на этапе работы препроцессора сишного компиля. Т.е., считайте на «нулевом этапе» работы компиля. Все остальные преобразования кода это потом.

Т.е., здесь из двух условий (блок кода и его вызов согласно соглашений о вызовах функций) невыполнено второе условие. Почему я и напирал именно на выполнении обоих условий.