This seems overly complex. The NetBSD solution of #defining the API that takes the structure to something like api_name_2 when you need to revise the structure seems more reasonable.