A struct declaration requires the keyword struct, optionally the name of the
struct (see below), and a body consisting of one or more attributes. It is
possible to optionally include a self-referential pointer, but not possible to
include a struct of type struct_name (struct_name struct_attribute).

If one or more structs is immediately desired, the entire declaration can be
treated as a type, and the name of one or more instances may follow the
declaration. In this case, it is possible to omit struct_name entirely,
though this is not advisable.

To declare a struct for use at any other point, the name of the struct,
struct_name, can be used as though it were any other type.