Как получить Offset поля в классе?
Впринципе это вопрос общего назначения, но для уточнения, я пишу под WinAVR.
При применении ассемблерных вставок в C++ для работы со структурами появляется необходимость взятия переменной относительно какого-то объекта (указателя), например:
LDD R0, Y+OFFSET(T::i)
Написал define:
#define OFFSETT(Type, Item) ((int)(&((Type *)0)->Item))
Что впринципе и возврящает необходимую константу. В С++ такой прикол проканывает, в асме старого компилятора тоже, а в новом начинает через один ворчать, мол не константа это.
Подскажите, может есть какие нибудь иные способы решения?