Do not hardcode size_t as unsigned for offsetof
Allow cast of functions to function pointers

Most of the time, this is not needed because we translate
function expressions to function pointers.  But this trick
is necessary to handle typeof((void*)f).
Avoid clashes for introduced __constr_expr

constrExprId was reset between each function definition, which
served no purposes and introduced clashes in the case of multiple
global compound init.