I came across the following code which declares `char *` array in `C` in a non-standard way:

```
    /* Message Type description array */ 
    char *msgType[M_LAST_MSG] = 
    {    
       [M_INIT_MSG]     "Init", 
       [M_RESET_MSG]    "Serdes Reset"
    };

```

`M_INIT_MSG`, `M_RESET_MSG` and `M_LAST_MSG` are enumerations with corresponding values of 0, 1 and 2. 
According to the formal `C` documentations, the variables inside this array are string (literals) so what is the purpose of using those enumerations in that manner and is there any documentation to back it up?

Compiled with ARM `gcc` compiler `gcc-arm-none-eabi`.