Скомпилировал код версией 4.11А. NOP'ы повыкидывал.
Как и ожидалось, структуры инициализируются правильно, указатели указывают, куда нужно.
Код
void (*fun_OK_addr)();
__root __flash const struct token token_table[] =
{"\r\n",fun_VOID,
"OK", fun_OK
};
0000000A: 0004
0000000C: 0009; верно, байтовый адрес fun_VOID - 18
0000000E: 0007
00000010: 000A; верно, байтовый адрес fun_OK - 20
fun_OK_addr = fun_VOID;
00000018: E009 ldi r16,#9
0000001A: E010 ldi r17,#0
0000001C: EAE0 ldi r30,#160
0000001E: E0F0 ldi r31,#0
00000020: 8300 st z,r16
00000022: 8311 std z+1,r17
(*fun_OK_addr)();
00000024: EAA0 ldi r26,#160
00000026: E0B0 ldi r27,#0
00000028: 91ED ld r30,x+
0000002A: 91FC ld r31,x
0000002C: 9509 icall
fun_OK_addr = token_table[0].fun;
0000002E: E0EC ldi r30,#12
00000030: E0F0 ldi r31,#0
00000032: 9105 lpm r16,z+
00000034: 9114 lpm r17,z
00000036: EAE0 ldi r30,#160
00000038: E0F0 ldi r31,#0
0000003A: 8300 st z,r16
0000003C: 8311 std z+1,r17
(*fun_OK_addr)();
0000003E: EAA0 ldi r26,#160
00000040: E0B0 ldi r27,#0
00000042: 91ED ld r30,x+
00000044: 91FC ld r31,x
00000046: 9509 icall
(*token_table[0].fun)();
00000048: E0EC ldi r30,#12
0000004A: E0F0 ldi r31,#0
0000004C: 9105 lpm r16,z+
0000004E: 9114 lpm r17,z
00000050: 01F8 movw r30,r16
00000052: 9509 icall