typedef для node_ptr на самом деле не добавляет поле в свою структуру.Далее сначала добавляются поля, а затем добавляется typedef.Другое изменение, которое я сделал, заключалось в том, чтобы объединение представляло один указатель, оставляя его структуре, которая использует его, чтобы решить, сколько указателей он хочет.
typedef struct internal_node_t{
int type;
int key;
union node_ptr_t {
struct internal_node_t* iptr;
leaf_node_t* lptr;
} node_ptr[2];
}internal_node_t;
typedef union node_ptr_t node_ptr_t;