Только что увидев Что делает следующий макрос? Я должен задать свой вопрос: почему заголовки многих приложений сами определяют offsetof?Есть ли какая-то причина, по которой на <stddef.h> нельзя положиться?
offsetof
<stddef.h>
Не думаю, что они не доверяют стандарту offsetof - по крайней мере из того, что я видел, обычно они просто не знают об этом.
Есть ли какая-то причина, по которой нельзя полагаться?
Я знаю одну из причин.GCC выдает предупреждение при использовании стандартного offsetof () для полей классов C ++.Это заставляет некоторых людей выдвигать свою собственную версию, которая не вызывает предупреждение.
Или, возможно, это устаревший код от компилятора C, который не был совместим с ANSI и не имел offsetof?