Additional members are permitted, and the fields can be order. In order to create a portable Ada interface, I have to write a short C program which uses sizeof and offsetof to extract the structure layout. In theory, it is possible to create compile-time-only tests suitable for cross-compilation (compile-time constant expressions, invalid zero-length arrays, and a binary search), but this is rather messy.
Look at AC_COMPUTE_INT. It should be easy to start from there and do a macro like
GCC_COMPUTE_MEMBERS_SIZE_OFFSET([#include <poll.h>], [struct pollfd], [fd events revents]).
Paolo