The typedef is frankly overkill.  You can perfectly well `struct { ... } modes[] = { ... };` without it.
Of course, if you like it better that way, be all means keep it.