when using the gnu c++, our offsetof macro does not work and produces cryptic errors...