No, in the first case (#define fall_speed ((var*)my.skill2)[2]) you'd have to write it like that :
fall_speed = 56; (without my)
as fall_speed gets replaced with ((var*)my.skill2)[2]. So this macro doesn't work with other entity pointers than my.

That's why I suggested the other method, where you can pass the entity pointer.